home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 38 / Amiga Format CD38 (1999-03-15)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-04].iso / -seriously_amiga- / programming / other / hrtmon / src / disassemble.s < prev    next >
Text File  |  1999-01-29  |  63KB  |  2,925 lines

  1.  
  2. ;HRTmon Amiga system monitor
  3. ;Copyright (C) 1991-1998 Alain Malek Alain.Malek@cryogen.com
  4. ;
  5. ;This program is free software; you can redistribute it and/or
  6. ;modify it under the terms of the GNU General Public License
  7. ;as published by the Free Software Foundation; either version 2
  8. ;of the License, or (at your option) any later version.
  9. ;
  10. ;This program is distributed in the hope that it will be useful,
  11. ;but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. ;GNU General Public License for more details.
  14. ;
  15. ;You can find the full GNU GPL online at: http://www.gnu.org
  16.  
  17.  
  18. * Beermon Disassembler modified for HRTmon
  19. * 68000-68040/FPU/MMU
  20.  
  21. HRTeval equ -1        ;use evaluate routine from HRTmon ? (for assemble)
  22.  
  23. ;s
  24. ;    lea.l    $f800d2,a4
  25. ;    lea.l    destbuf(pc),a0
  26. ;    bsr    disassemble
  27. ;    rts
  28. ;
  29. ;destbuf        dcb.b 80,0
  30. ;        dc.b 0
  31. ;        even
  32. ;
  33. ;evaluate
  34. *****************************************************************************
  35. ;-> a4=address to dis
  36. ;-> a0=ptr on dest string
  37. ;-> d0=%00000RAU
  38. ;    U=1 upper case
  39. ;    A=1 print 'd $address'
  40. ;    R=1 print indirect address
  41. ;<- d0=len of instr.
  42.  
  43. baseBMON
  44.  
  45. xcharsBMON equ 80
  46.  
  47.  
  48.  
  49. failBMON:    sf d7
  50.     rts
  51.  
  52.  
  53. disassemble:
  54.     movem.l d1-d7/a0-a3/a5-a6,-(a7)    ;yo, funky again...
  55.     lea.l    baseBMON(pc),a6
  56.     move.b    d0,modeBMON
  57.     move.l    a4,a5
  58.     move.l    a5,disaddrBMON
  59.     move.l    a0,linebufBMON
  60.  
  61.     lea instrBMON(pc),a4    ;a5:pc
  62.     move.l a5,d6
  63. dis2BMON:    moveq #xcharsBMON/4-1-1,d0        ;redisBMON
  64.     move.l    linebufBMON,a0
  65.     move.l #"    ",d1    ;fill linebufBMON
  66. dis3BMON:    move.l d1,(a0)+
  67.     dbf d0,dis3BMON
  68.     move.b    #$a,(a0)+
  69.     clr.b    (a0)+
  70.  
  71.     sf ea2ndBMON            ;begin with 1st eaposBMON
  72.     move.l d6,a5
  73.     move.w (a5)+,d1        ;instrBMON.w
  74. dis0BMON:    move.w d1,d0
  75.     and.w (a4)+,d0        ;mask
  76.     cmp.w (a4),d0        ;instrframe
  77.     lea 14-2(a4),a4
  78.     bne.b dis0BMON        ;scan instrBMON
  79.     move.w 4-14(a4),d2        ;info.w
  80.     move.l d6,d0
  81.     move.l    linebufBMON,a0
  82.     btst    #1,modeBMON
  83.     beq.b    .noaddress
  84.     move.w #"d ",(a0)+
  85.     move.b    #"$",(a0)+
  86.     bsr.w longtoaBMON
  87.     addq.w #1,a0
  88. .noaddress
  89.  
  90.     lea -14+6(a4),a1
  91. dis1BMON:    move.b (a1)+,(a0)+
  92.     bpl.b dis1BMON
  93.     bclr #7,-1(a0)        ;end
  94.  
  95.     st d7
  96.     move.w d2,d4
  97.     and.w #$ff00,d4        ;sizeopt
  98.     cmp.w #s67BMON,d4
  99.     bne.b nos67BMON
  100.     bsr.w size67BMON
  101. nos67BMON:    cmp.w #s9a_BMON,d4
  102.     bne.b nos9a_BMON
  103.     bsr.w size9a_BMON
  104. nos9a_BMON:    cmp.w #s9aBMON,d4
  105.     bne.b nos9aBMON
  106.     bsr.w size9aBMON
  107. nos9aBMON:    cmp.w #s6BMON,d4
  108.     bne.b nos6BMON
  109.     bsr.w size6BMON
  110. nos6BMON:    cmp.w #s8BMON,d4
  111.     bne.b nos8BMON
  112.     bsr.w size8BMON
  113. nos8BMON:    cmp.w #stabBMON,d4
  114.     bne.b nostabBMON
  115.     bsr.w opsposBMON
  116. nostabBMON:    ;cmp.w #snopBMON,d4
  117.     ;bne.b nosnopBMON
  118. nosnopBMON:
  119.     lea disoffsBMON(pc),a1
  120.     ext.w d2        ;clr sizeopt
  121.     add.w d2,d2
  122.     move.w (a1,d2.w),d2
  123.     move.l d6,-(a7)
  124.     jsr dissubsBMON(pc,d2.w)        ;no d7,a4
  125.     move.l (a7)+,d6
  126.     tst.b d7
  127.     beq.w dis2BMON
  128.  
  129.     move.l    a5,a4                ;next instr. addr in a4
  130.     sub.l    disaddrBMON,a5
  131.     move.l    a5,d0                ;d0=len of instr.
  132.  
  133.     btst    #0,modeBMON        ;upper case ?
  134.     beq.b    .end
  135.     move.l    linebufBMON,a0
  136. .up    move.b    (a0)+,d1
  137.     beq.b    .end
  138.     cmp.b    #'a',d1
  139.     blt.b    .up
  140.     cmp.b    #'z',d1
  141.     bgt.b    .up
  142.     sub.b    #'a'-'A',d1
  143.     move.b    d1,-1(a0)
  144.     bra.b    .up
  145. .end    movem.l (a7)+,d1-d7/a0-a3/a5-a6
  146.     rts
  147.  
  148. dissubsBMON:
  149. opfailBMON=*-dissubsBMON
  150.     moveq #-1,d0
  151. opf0BMON:    move.w d0,$dff180
  152.     dbf d0,opf0BMON
  153. noopsBMON=*-dissubsBMON
  154.     rts
  155.  
  156. dcwopBMON=*-dissubsBMON
  157.     move.w d1,d0
  158.     bra.w wordtoa_BMON
  159.  
  160. eatoccrBMON=*-dissubsBMON
  161.     sf imsizeBMON
  162.     bsr.w doeaBMON
  163.     bra.w optoccrBMON
  164.  
  165. eatosrBMON=*-dissubsBMON
  166.     move.b #1,imsizeBMON
  167.     bsr.w doeaBMON
  168.     bra.w optosrBMON
  169.  
  170. ccrtoeaBMON=*-dissubsBMON
  171.     bsr.w opccrBMON
  172.     bra.b dissreaBMON
  173. srtoeaBMON=*-dissubsBMON
  174.     bsr.w opsrBMON
  175. dissreaBMON:bra.w dotoeaBMON
  176.  
  177. fpufmt2BMON:dc.b "lsxpwdbp"
  178. dfmvmemBMON:lea movetxtBMON+1(pc),a1    ;fmove
  179.     bsr txttobufBMON
  180.     move.b #".",(a0)+
  181.     move.w d6,d0
  182.     rol.w #6,d0
  183.     and.w #%111,d0
  184.     move.b (fpufmt2BMON,pc,d0.w),(a0)+
  185.     bsr opsposBMON
  186.     moveq #%111000,d2
  187.     and.w d1,d2
  188.     bne.b no2dregBMON        ;dn ?
  189.     tst.b d0    ;%000.l
  190.     beq.b no2dregBMON
  191.     subq.b #1,d0    ;%001.sBMON
  192.     beq.b no2dregBMON    
  193.     subq.b #3,d0    ;%100.w
  194.     beq.b no2dregBMON
  195.     subq.b #2,d0    ;%110.b
  196.     bne.b dmvfailBMON
  197. no2dregBMON:cmp.b #%001000,d2    ;an ?
  198.     beq.b dmvfailBMON
  199.     moveq #%01111111,d5
  200.     and.w d6,d5        ;k factor
  201.     moveq #1,d3        ;static k
  202.     subq.b #%011,d0        ;p{#k}
  203.     beq.b dfmvk0BMON
  204.     moveq #2,d3        ;dynamic k
  205.     subq.b #%111-%011,d0    ;p{dn}
  206.     beq.b dfmvk0BMON
  207.     tst.b d5
  208.     bne.b dmvfailBMON        ;k factor>0 ?
  209.     moveq #0,d3        ;no k factor
  210. dfmvk0BMON:    move.w d6,d0
  211.     lsr.w #7,d0
  212.     and.w #%111,d0
  213.     bsr.w dfp5BMON        ;fpn
  214.     bsr dotoeaBMON
  215.     subq.b #1,d3        ;k factor ?
  216.     bmi.b dfmvk1BMON
  217.     move.b #"{",(a0)+
  218.     tst.b d3        ;static ?
  219.     beq.b dfmvkp0BMON
  220.     moveq #%1111,d0
  221.     and.b d5,d0
  222.     bne.b dmvfailBMON        ;unused bitsBMON
  223.     move.b #"d",(a0)+
  224.     lsr.b #4,d5 
  225.     bra.b dfmvkpBMON
  226. dfmvkp0BMON:move.b #"#",(a0)+
  227.     btst #6,d5
  228.     beq.b dfmvkpBMON
  229.     bset #7,d5
  230.     neg.b d5
  231.     move.b #"-",(a0)+
  232. dfmvkpBMON:    move.l d5,d0
  233.     bsr.w hextodBMON
  234.     move.b #"}",(a0)+
  235. dfmvk1BMON:    rts
  236. dmvfailBMON:bra failBMON
  237.  
  238. dfpuBMON=*-dissubsBMON
  239.     move.w (a5)+,d6        ;fpu extension word
  240.     move.w #$e000,d0
  241.     and.w d6,d0
  242.     cmp.w #$6000,d0
  243.     beq.w dfmvmemBMON
  244.     move.w #$a000,d0
  245.     and.w d6,d0
  246.     bne.b dffailBMON
  247.     btst #14,d6        ;r/m
  248.     bne.b dfp0BMON
  249.     tst.b d1        ;ea field=0?
  250.     bne.b dffailBMON
  251. dfp0BMON:    lea fpuinstBMON(pc),a1
  252.     moveq #%01111111,d0
  253.     and.w d6,d0
  254. dfp2BMON:    move.b (a1)+,d2
  255.     bclr #7,d2
  256.     sne d3        ;0:fp0,ff:fp0,fp0
  257.     moveq #%01111000,d4
  258.     and.b d6,d4
  259.     cmp.b #%00110000,d4    ;sincosBMON
  260.     seq d4
  261.     beq.b dfp1BMON
  262.     cmp.b d2,d0
  263.     beq.b dfp1BMON
  264.     addq.w #6,a1
  265.     tst.b (a1)
  266.     bne.b dfp2BMON
  267. dffailBMON:    sf d7
  268.     rts
  269. fpufmtBMON:    dc.b "lsxpwdb*"
  270. fpuimsBMON:    dc.b %010,%010,%110,%110,%001,%100,%000,-1
  271. dfp1BMON:    bsr.w txttobufBMON
  272.     move.b #".",(a0)+
  273.     move.w d6,d0
  274.     rol.w #6,d0
  275.     and.w #%111,d0
  276.     btst #14,d6
  277.     beq.b dfp3BMON
  278.     cmp.w #%111,d0
  279.     beq.b dffailBMON
  280.     move.b (fpufmtBMON,pc,d0),(a0)+
  281.     move.b (fpuimsBMON,pc,d0.w),imsizeBMON
  282.     bsr.w opsposBMON
  283.     moveq #%111000,d2
  284.     and.w d1,d2    ;src:datareg?
  285.     bne.b dfp8BMON
  286.     tst.b d0    ;%000.l
  287.     beq.b dfp8BMON
  288.     subq.b #1,d0    ;%001.sBMON
  289.     beq.b dfp8BMON    
  290.     subq.b #3,d0    ;%100.w
  291.     beq.b dfp8BMON
  292.     subq.b #2,d0    ;%110.b
  293.     bne.b dffailBMON
  294. dfp8BMON:    cmp.b #%001000,d2    ;an
  295.     beq.b dffailBMON
  296.     bsr.w doeaBMON    ;imsizeBMON!!!
  297.     st d0        ;dest fpureg
  298.     sf d3
  299.     bra.b dfp6BMON
  300. dfp3BMON:    move.b #"x",(a0)+
  301.     bsr.w opsposBMON
  302.     bsr.b dfp5BMON
  303. dfp6BMON:    moveq #%01111111,d2
  304.     and.w d6,d2
  305.     cmp.b #%00111010,d2
  306.     bne.b dftstBMON
  307.     and.w #$0380,d6        ;ftst:dst=0
  308.     bne.w failBMON
  309.     rts
  310. dftstBMON:    tst.b d4
  311.     beq.b dsncsBMON
  312.     moveq #%111,d2
  313.     and.w d6,d2
  314.     bsr.b dfp7BMON
  315.     move.b #":",(a0)+
  316.     move.w d6,d0
  317.     lsr.w #7,d0
  318.     and.w #%111,d0
  319.     bra.b dfp5BMON
  320. dsncsBMON:    move.w d6,d2
  321.     lsr.w #7,d2
  322.     and.w #%111,d2
  323.     tst.b d3
  324.     bne.b dfp7BMON    ;show fp0,fp0
  325.     cmp.b d0,d2
  326.     beq.b dfp4BMON
  327. dfp7BMON:    move.w d2,d0
  328.     move.b #",",(a0)+
  329. dfp5BMON:    move.b #"f",(a0)+
  330.     move.b #"p",(a0)+
  331.     moveq #"0",d2
  332.     add.b d0,d2
  333.     move.b d2,(a0)+    
  334. dfp4BMON:    rts            
  335.  
  336. dfmovemxBMON=*-dissubsBMON
  337.     move.w #$c700,d0
  338.     and.w (a5),d0
  339.     cmp.w #$c000,d0        ;fmovem fpx?
  340.     bne.w failBMON
  341.     move.w (a5)+,d3
  342.     btst #13,d3
  343.     bne.b dfmovm1BMON
  344.     bsr doeaBMON
  345.     move.b #",",(a0)+
  346.     bra dofprxBMON
  347. dfmovm1BMON:bsr dofprxBMON
  348.     bra dotoeaBMON
  349. dfmovemlBMON=*-dissubsBMON
  350.     st d5
  351.     bra.b dfmovemBMON
  352.  
  353. dfmovelBMON=*-dissubsBMON
  354.     sf d5            ;no fmovem
  355. dfmovemBMON:move.w #$c3ff,d0
  356.     and.w (a5),d0
  357.     cmp.w #$8000,d0
  358.     bne.w failBMON
  359.     move.b #%010,imsizeBMON    ;long
  360.     move.w (a5)+,d6
  361.     eor.w d0,d6
  362.     btst #10,d6
  363.     sne d4
  364.     btst #11,d6
  365.     sne d0
  366.     add.b d0,d4
  367.     btst #12,d6
  368.     sne d0
  369.     add.b d0,d4        ;singleflag:0:0,-1:1,-2:2,-3:3
  370.     beq.w failBMON        ;0 fpcrBMON
  371.     moveq #%111000,d0
  372.     and.w d1,d0        ;Dn?
  373.     bne.b nofdregBMON
  374.     cmp.b #-1,d4        ;1 fpcrBMON?
  375.     bne.w failBMON
  376. nofdregBMON:subq.w #%001000,d0    ;An?
  377.     bne.b nofaregBMON
  378.     cmp.b #-1,d4        ;1 fpcrBMON?
  379.     bne.w failBMON    
  380.     btst #10,d6        ;fpcrBMON=fpiarBMON?
  381.     beq.w failBMON
  382. nofaregBMON:bclr #13,d6
  383.     beq.b tofpcrBMON
  384.     bsr.b dofpcrBMON
  385.     bra dotoeaBMON        
  386. tofpcrBMON:    bsr doeaBMON
  387.     move.b #",",(a0)+
  388. dofpcrBMON:    move.b #"f",(a0)+
  389.     move.b #"p",(a0)+
  390.     moveq #"c",d0
  391.     bclr #12,d6
  392.     bne.b fpcr0BMON
  393.     moveq #"s",d0
  394.     bclr #11,d6
  395.     bne.b fpcr0BMON
  396.     move.b #"i",(a0)+
  397.     moveq #"a",d0
  398.     bclr #10,d6
  399.     beq.w failBMON
  400. fpcr0BMON:    move.b d0,(a0)+
  401.     move.b #"r",(a0)+
  402.     tst.w d6
  403.     beq.b fpsinglBMON
  404.     tst.b d5        ;fmovem?
  405.     beq.w failBMON
  406.     move.b #"/",(a0)+
  407.     bra.b dofpcrBMON
  408. fpsinglBMON:rts
  409.  
  410. dfmovecrBMON=*-dissubsBMON
  411.     move.w (a5),d0
  412.     and.w #$fc40,d0
  413.     cmp.w #$5c00,d0    
  414.     bne.w failBMON
  415.     moveq #$003f,d0
  416.     and.w (a5),d0
  417.     move.w d0,d1
  418.     beq.b dfmk1xBMON
  419.     cmp.b #$30,d0
  420.     bcc.w dfmk3xBMON
  421.     cmp.b #$0f,d0
  422.     bhi.w failBMON
  423.     cmp.b #$0b,d0
  424.     bcs.w failBMON
  425.     sub.b #$0b-1,d1
  426.     bra.b dfmk1xBMON
  427. dfmk3xBMON:    sub.b #$30-($0f-$0b)-2,d1
  428. dfmk1xBMON:    move.b #"#",(a0)+
  429.     bsr.w hextoa_BMON
  430.     move.w (a5)+,d0
  431.     bsr.w optofpx79BMON
  432.     move.l    linebufBMON,a0
  433.     lea.l    40(a0),a0
  434.     move.b #";",(a0)+
  435.     lea fmconstBMON(pc),a1
  436.     cmp.b #10,d1    ;Pi..100
  437.     bls.b skipcrBMON
  438.     bsr.b dfmk0BMON
  439.     moveq #0,d0
  440.     sub.b #9,d1    ;1E4..1E4096
  441.     bset d1,d0
  442.     bra.w hextodBMON
  443. skipcrBMON:    tst.b (a1)+
  444.     bpl.b skipcrBMON
  445.     dbf d1,skipcrBMON
  446. dfmk0BMON:    bra.w txttobufBMON
  447.     
  448. dpccodewordrelBMON=*-dissubsBMON
  449.     moveq #-16,d0        ;$fff0 16 mmu ccodesBMON
  450.     and.w (a5),d0
  451.     bne.w failBMON
  452.     move.w (a5)+,d0
  453.     bsr.w dopccBMON
  454.     bra.b dfcc0BMON
  455. dfccodewordrelBMON=*-dissubsBMON
  456.     moveq #-32,d0        ;$ffe0 32 fpu ccodesBMON
  457.     and.w (a5),d0
  458.     bne.w failBMON
  459.     move.w (a5)+,d0
  460.     bsr.w dofccBMON
  461. dfcc0BMON:    bsr.w opsposBMON
  462.     bsr.w opdx02BMON
  463.     move.b #",",(a0)+
  464.     move.w (a5)+,d0
  465.     lea -2(a5,d0.w),a1    ;instrlen:4bytesBMON (oma bug)
  466.     bra.b wbx2BMON
  467. ccodewordrelBMON=*-dissubsBMON
  468.     move.w d1,d0
  469.     bsr.w doccBMON
  470. wbx4BMON:    bsr.w opsposBMON
  471.     bsr.w opdx02BMON
  472.     move.b #",",(a0)+
  473.     bra.b wbx3BMON
  474. wordccBMON=*-dissubsBMON
  475.     move.w d1,d0
  476.     bsr.w doccBMON
  477. wordcc0BMON:bsr.w chr2bufBMON
  478.     dc.w ".w"        ;bxx.w
  479.     bsr.w opsposBMON
  480. wordbxxBMON=*-dissubsBMON
  481. wbx3BMON:    move.w (a5)+,d0
  482.     lea -2(a5,d0.w),a1
  483. wbx2BMON:    move.l a1,d0
  484.     bra.w hextoa_BMON            ;bra.w longtoa_BMON
  485. longccBMON=*-dissubsBMON
  486.     move.w d1,d0
  487.     bsr.w doccBMON
  488. longcc0BMON:bsr.w chr2bufBMON
  489.     dc.w ".l"        ;bxx.l
  490.     bsr.w opsposBMON
  491. longbxxBMON=*-dissubsBMON
  492.     move.l (a5)+,d0
  493.     lea -4(a5,d0.l),a1
  494.     bra.b wbx2BMON
  495.     
  496. shortccBMON=*-dissubsBMON
  497.     move.w d1,d0
  498.     bsr.w doccBMON
  499.     bsr.w chr2bufBMON
  500.     dc.w ".b"
  501.     bsr.w opsposBMON
  502. shortbxxBMON=*-dissubsBMON
  503.     move.b d1,d0
  504.     ext.w d0
  505.     lea (a5,d0.w),a1
  506.     bra.b wbx2BMON
  507.  
  508. dbrapccBMON=*-dissubsBMON
  509.     move.w d1,d0
  510.     bsr.w dopccBMON
  511.     bra.b dbra0BMON
  512. dbrafccBMON=*-dissubsBMON
  513.     move.w d1,d0
  514.     bsr.w dofccBMON
  515. dbra0BMON:    btst #6,d1
  516.     beq.b wordcc0BMON
  517.     bra.b longcc0BMON
  518.         
  519. eatoaxBMON=*-dissubsBMON
  520.     bsr.w doeaBMON
  521.     bra.w optoax9bBMON
  522.  
  523. ea2todxBMON=*-dissubsBMON
  524.     move.b #2,imsizeBMON    ;68020:chk.l #i.l,<ea>
  525.     bra.b ea2dxBMON
  526. eatodxBMON=*-dissubsBMON
  527.     move.b #1,imsizeBMON
  528. ea2dxBMON:
  529. size67eatodxBMON=*-dissubsBMON
  530.     bsr.w doeaBMON
  531.     bra.w optodx9bBMON
  532.  
  533. dxtoeaBMON=*-dissubsBMON        ;no im possible
  534.     bsr.w opdx9bBMON
  535.     move.w #$f1c0,d0
  536.     and.w d1,d0
  537.     cmp.w #$0100,d0        ;btst: pcrel allowed
  538.     beq.b dxtea0BMON
  539.     bra.w dotoeaBMON
  540.  
  541. dxtea0BMON:    move.b #",",(a0)+
  542.     bra.w doeaBMON
  543.  
  544. iwordtoccrBMON=*-dissubsBMON
  545.     move.b #"#",(a0)+        ;8/16?
  546.     moveq #0,d0
  547.     move.b (a5)+,d0
  548.     bne.w failBMON
  549.     move.b (a5)+,d0
  550.     bsr.w hextoa_BMON            ;bsr.w bytetoa_BMON
  551.     bra.w optoccrBMON
  552.  
  553. iwordtosrBMON=*-dissubsBMON
  554.     bsr.b iwrdBMON
  555.     bra.w optosrBMON
  556.  
  557. toiwordBMON:move.b #",",(a0)+
  558. iwordBMON=*-dissubsBMON
  559. iwrdBMON:    move.b #"#",(a0)+
  560.     moveq #0,d0
  561.     move.w (a5)+,d0
  562.     bra.w hextoa_BMON            ;bra.w wordtoa_BMON
  563.  
  564. dlpstopBMON=*-dissubsBMON
  565.     cmp.w #$01c0,(a5)+
  566.     beq.b iwrdBMON
  567.     bra.w failBMON      
  568. dtblBMON=*-dissubsBMON
  569.     move.w (a5),d0
  570.     and.w #$8238,d0
  571.     bne.w failBMON
  572.     move.w (a5),d0
  573.     moveq #"s",d3
  574.     btst #11,d0
  575.     bne.b dtblsBMON
  576.     moveq #"u",d3
  577. dtblsBMON:    move.b d3,(a0)+
  578.     btst #10,d0
  579.     beq.b dtblrBMON
  580.     move.b #"n",(a0)+
  581. dtblrBMON:    bsr.w siz67d0BMON        ;setsBMON imsizeBMON,del:d0
  582.     move.w (a5)+,d3
  583.     btst #8,d3        ;datareg|eamode
  584.     beq.b dtbldatBMON
  585.     moveq #%111111,d0    
  586.     and.w d3,d0
  587.     bne.w failBMON    
  588.     bsr.w doeaBMON
  589.     bra.b dtblregBMON    
  590. dtbldatBMON:bsr.w opdx02BMON
  591.     move.b #":",(a0)+
  592.     move.b #"d",(a0)+
  593.     move.w d3,d0
  594.     bsr.w op0xx02BMON    
  595. dtblregBMON:move.w d3,d0
  596.     rol.w #4,d0
  597.     move.b #",",(a0)+
  598.     move.b #"d",(a0)+
  599.     bra.w op0xx02BMON
  600.  
  601. inibtoeaBMON=*-dissubsBMON
  602.     move.b #"#",(a0)+
  603.     move.w (a5)+,d0
  604.     and.l #%11111,d0        ;#0-31(7)
  605.     bsr.w hextodBMON
  606.     move.w #$ffc0,d0
  607.     and.w d1,d0
  608.     cmp.w #$0800,d0        ;btst: pcrel allowed
  609.     beq.b inibea0BMON
  610.     bra.w dotoeaBMON
  611.  
  612. inibea0BMON:move.b #",",(a0)+
  613.     bra.w doeaBMON
  614. dpccodeeaBMON=*-dissubsBMON
  615.     moveq #-16,d0
  616.     and.w (a5),d0
  617.     bne.w failBMON
  618.     move.w (a5)+,d0
  619.     bsr.w dopccBMON
  620.     bra.b ccode0BMON
  621. fccodeeaBMON=*-dissubsBMON
  622.     moveq #-32,d0
  623.     and.w (a5),d0
  624.     bne.w failBMON
  625.     move.w (a5)+,d0
  626.     bsr.w dofccBMON
  627.     bra.b ccode0BMON
  628. ccodeeaBMON=*-dissubsBMON
  629.     move.w d1,d0
  630.     bsr.w doccBMON
  631. ccode0BMON:    bsr.w opsposBMON
  632. srceaBMON=*-dissubsBMON
  633.     bra.w doeaBMON
  634. imovesBMON=*-dissubsBMON
  635.     move.w (a5)+,d3
  636.     move.w #$07ff,d0
  637.     and.w d3,d0
  638.     bne.w failBMON
  639.     bclr #11,d3
  640.     bne.b mvsrxBMON
  641.     bsr.w doeaBMON
  642.     move.b #",",(a0)+
  643.     bra.w mvcrxcfBMON
  644. mvsrxBMON:    bsr.w mvcrxcfBMON
  645.     bra.w dotoeaBMON        
  646.  
  647. size67ixtoeaBMON=*-dissubsBMON
  648.     bsr.w immediateBMON
  649.     bra.w dotoeaBMON
  650.  
  651. size67i9btoeaBMON=*-dissubsBMON
  652.     bsr.w opi9bBMON
  653.     bra.w dotoeaBMON
  654.  
  655. size67x9btodx02BMON=*-dissubsBMON
  656.     btst #5,d1
  657.     beq.b shi9bBMON
  658.     bsr.w opdx9bBMON
  659.     bra.b shdx9bBMON
  660. shi9bBMON:    bsr.w opi9bBMON
  661. shdx9bBMON:    bra.w optodx02BMON
  662.  
  663. itrapBMON=*-dissubsBMON
  664.     move.b #"#",(a0)+
  665.     move.w d1,d0
  666.     bra.w nibtodBMON
  667.  
  668. srcdx02BMON=*-dissubsBMON
  669.     bra.w opdx02BMON
  670.  
  671. imuspBMON=*-dissubsBMON
  672.     btst #3,d1
  673.     beq.b imusp0BMON
  674.     bsr.w opuspBMON
  675.     bra.w optoax02BMON
  676. imusp0BMON:    bsr.w opax02BMON
  677.     bra.w optouspBMON
  678.  
  679. dpmovefdBMON=*-dissubsBMON            ;68030mmu only
  680.     move.w (a5),d0
  681.     cmp.w #$4100,d0            ;40:tc
  682.     beq.w dpmvfdBMON
  683.     eor.w #%0000100100000000,d0    ;08:tt0,0c:tt1,48:srp,4c:crp
  684.     and.w #%1011101111111111,d0
  685.     bne.w failBMON
  686.     bra.b dpmvfdBMON    ;bit9=0
  687. dpmoveBMON=*-dissubsBMON
  688.     move.w #$01ff,d0
  689.     and.w (a5),d0
  690.     bne.w failBMON
  691. dpmvfdBMON:    move.w (a5)+,d3
  692.     bclr #8,d3    ;pmovefd bit
  693.     bclr #9,d3
  694.     bne.b pmvtoeaBMON
  695.     bsr.w doeaBMON
  696.     move.b #",",(a0)+
  697.     bra.b pmvregBMON
  698. pmvtoeaBMON:bsr.b pmvregBMON
  699.     bra.w dotoeaBMON
  700. pmvregBMON:    lea pregsBMON(pc),a1
  701.     lsr.w #8,d3
  702. pmvlpBMON:    move.b (a1)+,d0
  703.     beq.w failBMON
  704.     cmp.b d3,d0
  705.     beq.b pmvfndBMON
  706. pmvscanBMON:btst #7,(a1)+
  707.     beq.b pmvscanBMON
  708.     bra.b pmvlpBMON
  709. pmvfndBMON:    bra.w txttobufBMON
  710. didbcacBMON=*-dissubsBMON    ;68040
  711. didb0BMON:    lsr.w #6,d1
  712.     moveq #3,d0
  713.     and.w d1,d0
  714.     move.b idctxBMON(pc,d0.w),(a0)+
  715.     move.b #"c",(a0)+
  716.     rts    
  717. idctxBMON:    dc.l "ndib"    ;nc,dc,ic,bc
  718. didbindBMON=*-dissubsBMON
  719.     move.w d1,-(a7)
  720.     bsr.b didb0BMON
  721.     move.w (a7)+,d1
  722.     bra.w toaindirectBMON
  723. dpflush40BMON=*-dissubsBMON        ;pflush,ptestr,ptestw
  724.     bra.w aindirectBMON
  725.  
  726. imovecBMON=*-dissubsBMON
  727.     move.w (a5)+,d3
  728.     btst #0,d1
  729.     bne.b toctrlBMON
  730.     bsr.b mvcregsBMON
  731.     move.b #",",(a0)+
  732.     bra.b mvcrxcfBMON
  733. toctrlBMON:    bsr.b mvcrxcfBMON
  734.     move.b #",",(a0)+
  735. mvcregsBMON:lea cregsBMON(pc),a1
  736.     move.w d3,d1
  737.     and.w #$0fff,d1
  738. nxtctrlBMON:cmp.w (a1),d1
  739.     beq.b mvcctrlBMON
  740.     tst.w (a1)
  741.     addq.w #6,a1
  742.     bne.b nxtctrlBMON    
  743.     bra.w failBMON
  744. mvcctrlBMON:addq.w #2,a1
  745.     move.b (a1)+,(a0)+
  746.     move.b (a1)+,(a0)+
  747.     tst.b (a1)
  748.     beq.b ctrl3chBMON
  749.     move.b (a1)+,(a0)+
  750.     tst.b (a1)
  751.     beq.b ctrl3chBMON
  752.     move.b (a1),(a0)+
  753. ctrl3chBMON:rts
  754. mvcrxcfBMON:move.w d3,d0        ;movec,movesBMON
  755. dbfiregBMON:and.w #$f000,d0        ;bitfield
  756.     rol.w #4,d0
  757. dbytregBMON:add.b #"0",d0
  758.     move.b #"a",(a0)+
  759.     bclr #3,d0
  760.     bne.b mvcaxBMON 
  761.     addq.b #"d"-"a",-1(a0)
  762. mvcaxBMON:    move.b d0,(a0)+
  763.     rts
  764. dbfieldtodxBMON=*-dissubsBMON
  765.     move.w (a5)+,d2
  766.     btst #15,d2
  767.     bne.w failBMON
  768.     bsr.b dbfi3BMON
  769.     move.b #",",(a0)+
  770.     move.w d2,d0
  771.     bra.b dbfiregBMON
  772. ddxtobfieldBMON=*-dissubsBMON
  773.     move.w (a5),d0
  774.     btst #15,d0
  775.     bne.w failBMON
  776.     bsr.b dbfiregBMON
  777.     move.b #",",(a0)+
  778.     move.w (a5)+,d2
  779.     bra.b dbfi3BMON
  780. dbfieldBMON=*-dissubsBMON
  781.     move.w (a5)+,d2
  782.     move.w d2,d0
  783.     and.w #$f000,d0
  784.     bne.w failBMON
  785. dbfi3BMON:    bsr.w doeaBMON
  786.     move.b #"{",(a0)+
  787.     move.w d2,d0
  788.     lsr.w #6,d0
  789.     bsr.b dbfi2BMON
  790.     move.b #":",(a0)+
  791.     move.w d2,d0
  792.     bsr.b dbfi2BMON
  793.     move.b #"}",(a0)+
  794.     rts
  795. dbfi2BMON:    btst #11-6,d0
  796.     bne.b dbfi1BMON
  797.     and.b #%11111,d0
  798.     bne.b no32BMON
  799.     moveq #32,d0
  800. no32BMON:    bra.w bytetodBMON    
  801. dbfi1BMON:    btst #10-6,d0        ;y00xxxy00xxx
  802.     bne.w failBMON
  803.     btst #9-6,d0
  804.     bne.w failBMON
  805.     move.b #"d",(a0)+
  806.     and.b #%111,d0
  807.     add.b #"0",d0
  808.     move.b d0,(a0)+
  809.     rts
  810. dbkptBMON=*-dissubsBMON
  811.     move.b #"#",(a0)+
  812.     bra.w opxx02BMON
  813. dpackBMON=*-dissubsBMON
  814.     btst #3,d1
  815.     beq.b dpadxBMON
  816.     bsr.w chr2bufBMON
  817.     dc.w "-("
  818.     bsr.w opax02BMON
  819.     bsr.w chr4bufBMON
  820.     dc.l "),-("
  821.     bsr.w opax9bBMON
  822.     move.b #")",(a0)+
  823.     bra.b dpad0BMON
  824. dpadxBMON:    bsr.w opdx02BMON
  825.     bsr.w optodx9bBMON
  826. dpad0BMON:    bra.w toiwordBMON
  827. dmov16BMON=*-dissubsBMON
  828.     move.w (a5),d2
  829.     and.w #$8fff,d2    
  830.     cmp.w #$8000,d2
  831.     bne.w failBMON
  832.     bsr.w aindirectpostBMON
  833.     move.w (a5)+,d1
  834.     rol.w #4,d1
  835.     bra.w toaindirectpostBMON
  836. dmov162BMON=*-dissubsBMON
  837.     moveq #%010000,d2    ;(ax)
  838.     bclr #4,d1
  839.     bne.b dmov1BMON
  840.     moveq #%011000,d2    ;(ax)+
  841. dmov1BMON:    bclr #3,d1
  842.     beq.b dmov0BMON
  843.     bsr.b dmov2BMON
  844.     or.w d2,d1
  845.     bra.w dotoeaBMON
  846. dmov0BMON:    or.w d2,d1
  847.     bsr.w doeaBMON
  848.     move.b #",",(a0)+
  849. dmov2BMON:    bra.w abslongBMON
  850.     
  851. imoveBMON=*-dissubsBMON
  852.     move.w d1,d0
  853.     and.w #%0011000000000000,d0
  854.     rol.w #4,d0
  855.     bne.b imo0BMON
  856.     sf d7
  857.     rts
  858. imo0BMON:    lea sizemovBMON(pc),a1
  859.     move.b (a1,d0.w),(a0)+
  860.     move.b 4(a1,d0.w),imsizeBMON
  861.  
  862.     bsr.w opsposBMON
  863.     bsr.w doeaBMON
  864.  
  865.     move.w d1,d0
  866.     rol.w #7,d0
  867.     and.w #%111,d0
  868.     move.w d1,d3
  869.     lsr.w #3,d3
  870.     and.w #%111000,d3
  871.     or.w d3,d0
  872.  
  873.     move.w d0,d1
  874.     bra.w dotoeaBMON
  875.  
  876. imoveqBMON=*-dissubsBMON
  877.     move.b #"#",(a0)+
  878.     moveq #0,d0
  879.     move.b d1,d0
  880.     bsr.w hextoa_BMON            ;bsr.w bytetoa_BMON
  881.     bra.w optodx9bBMON    
  882.  
  883. icallmBMON=*-dissubsBMON
  884.     tst.b (a5)
  885.     bne.w failBMON
  886.     move.w d1,-(a7)
  887.     move.b #"#",(a0)+
  888.     moveq #0,d0
  889.     move.b (a5)+,d0
  890.     bne.w failBMON
  891.     move.b (a5)+,d0
  892.     bsr.w hextoa_BMON            ;bsr.w bytetoa_BMON
  893.     move.w (a7)+,d1
  894.     bra.w dotoeaBMON
  895.  
  896. dcasBMON=*-dissubsBMON
  897.     bsr.w opsposBMON
  898.     move.w (a5),d0
  899.     and.w #$0e38,d0
  900.     bne.w failBMON
  901.     move.w (a5),d0
  902.     move.b #"d",(a0)+
  903.     bsr.w op0xx02BMON
  904.     move.b #",",(a0)+
  905.     move.w (a5)+,d0
  906.     lsr.w #6,d0
  907.     move.b #"d",(a0)+
  908.     bsr.w op0xx02BMON
  909.     bra.w dotoeaBMON
  910.  
  911. dcas2BMON=*-dissubsBMON
  912.     moveq #"w",d2
  913.     btst #9,d1
  914.     beq.b dca0BMON
  915.     moveq #"l",d2
  916. dca0BMON:    move.b d2,(a0)+
  917.     bsr.w opsposBMON
  918.     move.l (a5),d2
  919.     and.l #$0e380e38,d2
  920.     bne.w failBMON
  921.     move.l (a5),d2
  922.     bsr.b casopBMON
  923.     move.b #",",(a0)+
  924.     lsr.l #6,d2
  925.     bsr.b casopBMON
  926.     bsr.w chr2bufBMON
  927.     dc.w ",("
  928.     move.w (a5)+,d0
  929.     bsr.w dbfiregBMON
  930.     bsr.w chr3bufBMON
  931.     dc.l "):("<<8
  932.     move.w (a5)+,d0
  933.     bsr.w dbfiregBMON
  934.     move.b #")",(a0)+
  935.     rts    
  936. casopBMON:    move.l d2,d0
  937.     swap d0
  938.     move.b #"d",(a0)+
  939.     bsr.w op0xx02BMON
  940.     move.w d2,d0
  941.     bsr.w chr2bufBMON
  942.     dc.w ":d"
  943.     bra.w op0xx02BMON
  944.  
  945. dchk2BMON=*-dissubsBMON
  946.     move.w (a5)+,d2
  947.     btst #11,d2
  948.     beq.w failBMON
  949.     bra.b dchkcmpBMON
  950. dcmp2BMON=*-dissubsBMON
  951.     move.w (a5)+,d2
  952.     btst #11,d2
  953.     bne.w failBMON
  954. dchkcmpBMON:bsr.w doeaBMON
  955.     move.b #",",(a0)+
  956.     move.w d2,d0
  957.     bra.w dbfiregBMON
  958.  
  959. drtmBMON=*-dissubsBMON
  960.     moveq #$0f,d0
  961.     and.w d1,d0
  962.     bra.w dbytregBMON
  963.  
  964. dtpccsizeBMON=*-dissubsBMON
  965.     move.w d1,d0
  966.     bsr.w doccBMON
  967. dtpc2BMON:    move.b #".",(a0)+
  968.     moveq #"w",d0
  969.     btst #0,d1
  970.     beq.b dtpc1BMON
  971.     moveq #"l",d0
  972. dtpc1BMON:    move.b d0,(a0)+
  973.     bsr.w opsposBMON
  974.     move.b #"#",(a0)+
  975.     moveq #0,d0
  976.     btst d0,d1
  977.     bne.b dtpc0BMON
  978.     move.w (a5)+,d0
  979.     bra.w hextoa_BMON            ;bra.w wordtoa_BMON
  980. dtpc0BMON:    move.l (a5)+,d0
  981.     bra.w hextoa_BMON            ;bra.w longtoa_BMON
  982. dtpccBMON=*-dissubsBMON
  983.     move.w d1,d0
  984.     bra.w doccBMON
  985. dtpfccsizeBMON=*-dissubsBMON
  986.     bsr.b dtpfcc0BMON
  987.     bra.b dtpc2BMON
  988. dtpfccBMON=*-dissubsBMON
  989. dtpfcc0BMON:moveq #-32,d0        ;$ffe0    ;32 fpu ccodesBMON
  990.     and.w (a5),d0
  991.     bne.w failBMON
  992.     move.w (a5)+,d0
  993.     bra.w dofccBMON
  994. dtppccsizeBMON=*-dissubsBMON
  995.     bsr.b dtppcc0BMON
  996.     bra.b dtpc2BMON
  997. dtppccBMON=*-dissubsBMON
  998. dtppcc0BMON:moveq #-16,d0        ;$fff0 ;16 mmu ccodesBMON
  999.     and.w (a5),d0
  1000.     bne.w failBMON
  1001.     move.w (a5)+,d0
  1002.     bra.w dopccBMON
  1003.  
  1004. dfnopBMON=*-dissubsBMON
  1005.     tst.w (a5)+        ;4byte command
  1006.     seq d7
  1007.     rts
  1008. dpvalidBMON=*-dissubsBMON
  1009.     moveq #-8,d0
  1010.     and.w (a5),d0
  1011.     cmp.w #$2c00,d0
  1012.     bne.w failBMON
  1013.     move.w (a5)+,d0
  1014.     move.b #"a",(a0)+
  1015.     bsr.w op0xx02BMON
  1016.     bra.w dotoeaBMON
  1017.  
  1018. dpflushaBMON=*-dissubsBMON
  1019.     cmp.w #$2400,(a5)+
  1020.     seq d7
  1021.     rts
  1022. dpflushrBMON=*-dissubsBMON
  1023.     cmp.w #$a000,(a5)+
  1024.     bne.w failBMON
  1025.     bra.w doeaBMON
  1026. dpflushsBMON=*-dissubsBMON
  1027.     cmp.b #$34,(a5)
  1028.     beq.b dpfl4BMON
  1029. dpfl5BMON:    bra.w failBMON
  1030. dpflushBMON=*-dissubsBMON
  1031.     cmp.b #$30,(a5)
  1032.     bne.b dpfl5BMON
  1033. dpfl4BMON:    move.w (a5)+,d0
  1034.     moveq #%00011000,d1
  1035.     and.w d0,d1
  1036.     bne.b dpfl1BMON
  1037.     moveq #%00000111,d1
  1038.     moveq #"s",d2
  1039.     and.w d0,d1
  1040.     beq.b dpfl2BMON
  1041.     moveq #"d",d2
  1042.     subq.b #1,d1
  1043.     bne.w failBMON
  1044. dpfl2BMON:    move.b d2,(a0)+
  1045.     bsr.w chr2bufBMON
  1046.     dc.w "fc"
  1047.     bra.b dpfl3BMON
  1048. dpfl1BMON:    cmp.w #%00011000,d1    ;illegal
  1049.     beq.w failBMON
  1050.     moveq #"#",d1
  1051.     bclr #3,d0    
  1052.     beq.b dpfl0BMON
  1053.     moveq #"d",d1
  1054. dpfl0BMON:    move.b d1,(a0)+
  1055.     bsr.w nibtoaBMON
  1056. dpfl3BMON:    bsr.w chr2bufBMON
  1057.     dc.w ",#"
  1058.     lsr.w #5,d0
  1059.     bra.w op0xx02BMON
  1060. dploadBMON=*-dissubsBMON
  1061.     move.w (a5),d0
  1062.     and.w #$fdf8,d0
  1063.     cmp.w #$2010,d0
  1064.     bne.w failBMON
  1065. dpte0BMON:    move.w (a5)+,d0
  1066.     move.b #"r",(a0)
  1067.     btst #9,d0
  1068.     bne.b dplo0BMON
  1069.     addq.b #"w"-"r",(a0)
  1070. dplo0BMON:    bsr.w opsposBMON
  1071.     move.b #"#",(a0)+
  1072.     bsr.w nibtoaBMON
  1073.     bra.w dotoeaBMON
  1074. dptestBMON=*-dissubsBMON
  1075.     move.w (a5),d0
  1076.     and.w #$e118,d0
  1077.     cmp.w #$8110,d0
  1078.     bne.w failBMON
  1079.     move.w (a5),d2
  1080.     bsr.b dpte0BMON
  1081.     bsr.w chr2bufBMON
  1082.     dc.w ",#"
  1083.     move.w d2,d0
  1084.     rol.w #6,d0
  1085.     moveq #%111,d2
  1086.     and.b d0,d2
  1087.     beq.w failBMON    ;level 0
  1088.     bsr.w nibtoaBMON
  1089.     bsr.w chr2bufBMON
  1090.     dc.w ",a"
  1091.     rol.w #5,d0
  1092.     bclr #3,d0
  1093.     bra.w nibtoaBMON
  1094.  
  1095. ddivsllBMON=*-dissubsBMON
  1096.     move.w (a5)+,d2
  1097.     bchg #10,d2        ;dn:dm mode,set g=1
  1098.     bne.w failBMON    
  1099.     bsr.b dmul5BMON
  1100.     bra.b ddivlBMON
  1101. ddivullBMON=*-dissubsBMON
  1102.     move.w (a5)+,d2
  1103.     bchg #10,d2        ;dn:dm mode,set g=1
  1104.     bne.w failBMON    
  1105.     bsr.b dmul4BMON
  1106. ddivlBMON:    sub.b d2,d1
  1107.     and.b #%111,d1        ;dm=dn
  1108.     beq.w failBMON
  1109.     rts
  1110. dmulslBMON=*-dissubsBMON
  1111. dmul3BMON:    move.w (a5)+,d2
  1112. dmul5BMON:    btst #11,d2
  1113.     beq.w failBMON
  1114.     bra.b dmul1BMON
  1115. dmululBMON=*-dissubsBMON
  1116. dmul2BMON:    move.w (a5)+,d2
  1117. dmul4BMON:    btst #11,d2
  1118.     bne.w failBMON
  1119. dmul1BMON:    move.w #$83f8,d0
  1120.     and.w d2,d0
  1121.     bne.w failBMON
  1122.     move.b #%10,imsizeBMON    ;longwordsBMON
  1123.     bsr.w doeaBMON
  1124.     move.b #",",(a0)+
  1125.     move.w d2,d1
  1126.     btst #10,d2
  1127.     beq.b dmul0BMON
  1128.     bsr.w opdx02BMON
  1129.     move.b #":",(a0)+
  1130.     rol.w #4,d1
  1131.     bra.w opdx02BMON
  1132.  
  1133. dmul0BMON:    rol.w #4,d1
  1134.     bsr.w opdx02BMON
  1135.     sub.b d2,d1
  1136.     and.b #%111,d1        ;mulxl ea,dn:dm=dn    
  1137.     bne.w failBMON
  1138.     rts
  1139.  
  1140. icmpmBMON=*-dissubsBMON
  1141.     bsr.w aindirectpostBMON
  1142.     rol.w #7,d1        ;(ax)+
  1143.     bra.w toaindirectpostBMON
  1144.  
  1145. xbcdBMON=*-dissubsBMON
  1146.     bclr #14,d1
  1147.     bclr #3,d1        ;dx
  1148.     beq.b xbcdxBMON    
  1149.     bset #5,d1        ;-(ax)
  1150.     bset #14,d1
  1151. xbcdxBMON:    bsr.w doeaBMON        ;no im possible
  1152.     rol.w #7,d1
  1153.     bra.w dotoeaBMON
  1154.  
  1155. size67adsbxBMON=*-dissubsBMON
  1156.     bclr #14,d1
  1157.     bclr #12,d1
  1158.     bclr #3,d1        ;dx
  1159.     beq.b adsbxdxBMON
  1160.     bset #14,d1        ;-(ax)
  1161.     bset #5,d1
  1162. adsbxdxBMON:bsr.w doeaBMON
  1163.     rol.w #7,d1
  1164.     bra.w dotoeaBMON    
  1165.  
  1166. size6movepBMON=*-dissubsBMON
  1167.     bset #5,d1        ;d(ax)
  1168.     btst #7,d1
  1169.     beq.b mptodxBMON
  1170.     bsr.w opdx9bBMON
  1171.     bra.w dotoeaBMON
  1172. mptodxBMON:    bsr.w doeaBMON
  1173.     bra.w optodx9bBMON
  1174.  
  1175. imovemBMON=*-dissubsBMON
  1176.     move.w (a5)+,d3        ;regbitsBMON
  1177.     btst #10,d1        ;dir
  1178.     bne.b torxBMON
  1179.     bsr.w dorxBMON
  1180.     bra.w dotoeaBMON
  1181. torxBMON:    bsr.w doeaBMON
  1182.     move.b #",",(a0)+
  1183.     bra.w dorxBMON
  1184.  
  1185. dx9btodx02BMON=*-dissubsBMON
  1186.     bsr.w opdx9bBMON
  1187.     bra.w optodx02BMON
  1188. ax9btoax02BMON=*-dissubsBMON
  1189.     bsr.w opax9bBMON
  1190.     bra.w optoax02BMON
  1191. dx9btoax02BMON=*-dissubsBMON
  1192.     bsr.w opdx9bBMON
  1193.     bra.w optoax02BMON
  1194.  
  1195. dlinklgBMON=*-dissubsBMON
  1196.     bsr.b iunl0BMON
  1197.     bsr.w chr2bufBMON
  1198.     dc.w ",#"
  1199.     bra.w dtpc0BMON
  1200. ilinkBMON=*-dissubsBMON
  1201.     bsr.b iunl0BMON
  1202.     bra.w toiwordBMON
  1203. iunlkBMON=*-dissubsBMON
  1204. iunl0BMON:    bra.w opax02BMON
  1205.  
  1206. size8eatoax9bBMON=*-dissubsBMON
  1207.     bsr.w doeaBMON
  1208.     bra.w optoax9bBMON
  1209.  
  1210. size8BMON:    btst #8,d1
  1211.     beq.b siz60BMON
  1212.     bra.b siz61BMON
  1213. size6BMON:    btst #6,d1
  1214.     bne.b siz61BMON
  1215. siz60BMON:    moveq #"w",d0
  1216.     move.b #1,imsizeBMON
  1217.     bra.b siz62BMON
  1218. siz61BMON:    moveq #"l",d0
  1219.     move.b #2,imsizeBMON
  1220. siz62BMON:    move.b #".",(a0)+
  1221.     move.b d0,(a0)+
  1222.     bra.b opsposBMON
  1223. size9a_BMON:move.w d1,d0            ;01.b,10.w,11.l,00.*
  1224.     lsr.w #3,d0
  1225.     sub.w #%01000000,d0    
  1226.     bra.b si9aBMON
  1227. size9aBMON:    move.w d1,d0            ;00.b,01.w,10.l,11.*
  1228.     lsr.w #3,d0
  1229.     bra.b si9aBMON
  1230. size67BMON:    move.w d1,d0
  1231. siz67d0BMON:
  1232. si9aBMON:    and.w #%11000000,d0
  1233.     cmp.w #%11000000,d0
  1234.     beq.w failBMON
  1235.     lsr.w #6,d0
  1236.     move.b d0,imsizeBMON    ;00.b,01.w,10.l,11.*
  1237.     move.b #".",(a0)+
  1238.     move.b sizetxtBMON(pc,d0.w),(a0)+
  1239. opsposBMON:
  1240.     move.b    #' ',(a0)+
  1241.     btst    #1,modeBMON
  1242.     beq.b    .notab
  1243.     move.l    linebufBMON,a0
  1244.     lea.l    23(a0),a0            ;ftrapngle.l
  1245. .notab    rts
  1246. sizetxtBMON:dc.l "bwl*"
  1247.  
  1248. opi9bBMON:    move.b #"#",(a0)+
  1249.     move.w d1,d0
  1250.     and.w #%111000000000,d0
  1251.     rol.w #7,d0
  1252.     bne.b i9b0BMON
  1253.     moveq #8,d0
  1254. i9b0BMON:    bra.w nibtodBMON
  1255. optoax9bBMON:move.b #",",(a0)+
  1256. opax9bBMON:    move.b #"a",(a0)+
  1257.     bra.b opxxBMON
  1258. optodx9bBMON:move.b #",",(a0)+
  1259. opdx9bBMON:    move.b #"d",(a0)+
  1260. opxxBMON:    move.w d1,d0
  1261.     and.w #%111000000000,d0
  1262.     rol.w #7,d0
  1263.     add.b #"0",d0
  1264.     move.b d0,(a0)+
  1265.     rts
  1266. optoax02BMON:move.b #",",(a0)+
  1267. opax02BMON:    move.b #"a",(a0)+
  1268.     bra.b opxx02BMON
  1269. optodx02BMON:move.b #",",(a0)+
  1270. opdx02BMON:    move.b #"d",(a0)+
  1271. opxx02BMON:    move.w d1,d0
  1272. op0xx02BMON:and.w #%111,d0
  1273.     add.b #"0",d0
  1274.     move.b d0,(a0)+
  1275.     rts
  1276. optofpx79BMON:move.b #",",(a0)+
  1277. opfpx79BMON:bsr.b chr2bufBMON
  1278.     dc.w "fp"
  1279.     lsr.w #7,d0
  1280.     bra.b op0xx02BMON
  1281. optouspBMON:move.b #",",(a0)+
  1282. opuspBMON:    lea usptxtBMON(pc),a1
  1283.     bra.b txttobufBMON
  1284. optoccrBMON:move.b #",",(a0)+
  1285. opccrBMON:    lea ccrtxtBMON(pc),a1
  1286.     bra.b txttobufBMON
  1287. optosrBMON:    move.b #",",(a0)+
  1288. opsrBMON:    lea srtxtBMON(pc),a1
  1289. txttobufBMON:
  1290.     move.b (a1)+,(a0)
  1291.     bclr #7,(a0)+
  1292.     beq.b txttobufBMON
  1293. txtqBMON:    rts    
  1294. chr2bufBMON:move.l a1,-(a7)        ;copiesBMON 2 chrsBMON below bsr chr2bufBMON
  1295.     move.l 4(a7),a1
  1296.     move.b (a1)+,(a0)+
  1297.     move.b (a1)+,(a0)+
  1298.     move.l (a7)+,a1
  1299.     addq.l #2,(a7)
  1300.     rts
  1301. chr3bufBMON:            ;copiesBMON 3 chrsBMON below bsr chr3bufBMON
  1302. chr4bufBMON:move.l a1,-(a7)        ;copiesBMON 4 chrsBMON below bsr chr4bufBMON
  1303.     move.l 4(a7),a1
  1304.     move.b (a1)+,(a0)+
  1305.     move.b (a1)+,(a0)+
  1306.     move.b (a1)+,(a0)+
  1307.     tst.b (a1)
  1308.     beq.b chr0BMON
  1309.     move.b (a1)+,(a0)+
  1310. chr0BMON:    move.l (a7)+,a1
  1311.     addq.l #4,(a7)
  1312.     rts
  1313.  
  1314. bcpltobufBMON:move.b (a1)+,d0
  1315. bcpl0BMON:    subq.b #1,d0
  1316.     bmi.b bcpl1BMON
  1317.     move.b (a1)+,(a0)+
  1318.     bra.b bcpl0BMON        
  1319. bcpl1BMON:    rts
  1320.  
  1321. dorxBMON:    move.w d1,d0
  1322.     and.w #%111000,d0
  1323.     cmp.w #%100000,d0    ;-(ax)
  1324.     bne.b drx8BMON
  1325.     moveq #16-1,d2
  1326. drx9BMON:    lsr.w #1,d3
  1327.     roxl.w #1,d0
  1328.     dbf d2,drx9BMON    
  1329.     move.w d0,d3
  1330. drx8BMON:    sf d5
  1331.     clr.w d2
  1332.     moveq #"d",d0
  1333.     bsr.b drx0BMON
  1334.     moveq #"a",d0
  1335. drx0BMON:    moveq #8,d4
  1336. drx1BMON:    tst.w d4
  1337.     beq.b drx5BMON
  1338.     btst d2,d3
  1339.     bne.b drx2BMON
  1340.     addq.w #1,d2
  1341.     subq.w #1,d4
  1342.     bra.b drx1BMON
  1343. drx2BMON:    tas d5
  1344.     beq.b drx3BMON
  1345.     move.b #"/",(a0)+
  1346. drx3BMON:    move.b d0,(a0)+
  1347.     move.b d2,(a0)
  1348.     add.b #"0",(a0)
  1349.     bclr #3,(a0)+
  1350.     sf d6
  1351. drx4BMON:    addq.w #1,d2
  1352.     subq.w #1,d4
  1353.     beq.b drx6BMON
  1354.     btst d2,d3
  1355.     beq.b drx6BMON
  1356.     st d6
  1357.     bra.b drx4BMON
  1358. drx6BMON:    tst.b d6
  1359.     beq.b drx7BMON
  1360.     move.b #"-",(a0)+
  1361.     move.b d0,(a0)+
  1362.     move.b d2,(a0)
  1363.     add.b #"0"-1,(a0)
  1364.     bclr #3,(a0)+
  1365. drx7BMON:    tst.w d4
  1366.     beq.b drx5BMON
  1367.     subq.w #1,d4
  1368.     addq.w #1,d2
  1369.     bra.b drx1BMON
  1370. drx5BMON:    rts
  1371.  
  1372. dofprxBMON:    move.w d1,d0
  1373.     and.w #%111000,d0
  1374.     beq.w failBMON        ;Dn
  1375.     cmp.w #%001000,d0    ;An
  1376.     beq.w failBMON
  1377.     moveq #%01110000,d6
  1378.     and.l d3,d6        ;posBMON
  1379.     cmp.b d3,d6
  1380.     beq.b dfprxaBMON
  1381.     moveq #-1,d6        ;neg:bad dynamic mask
  1382. dfprxaBMON:    lsr.b #4,d6
  1383.     add.b #"0",d6        ;dynamic mask
  1384.     cmp.w #%100000,d0    ;-(ax)
  1385.     bne.b dfprx8BMON
  1386.     btst #13,d3    ;dr field
  1387.     beq.w failBMON    ;to FPx?
  1388.     btst #12,d3    ;mode
  1389.     bne.w failBMON    ;no predec mode?
  1390.     moveq #8-1,d2
  1391. dfprx9BMON:    lsr.b #1,d3
  1392.     roxl.b #1,d0
  1393.     dbf d2,dfprx9BMON    
  1394.     move.b d0,d3
  1395.     bra.b dfprx0BMON
  1396. dfprx8BMON:    btst #12,d3    ;mode
  1397.     beq.w failBMON    ;predec mode?
  1398. dfprx0BMON:    btst #11,d3
  1399.     beq.b dfpstatBMON
  1400.     tst.l d6
  1401.     bmi.w failBMON    ;bad dynamic mask
  1402.     move.b #"d",(a0)+
  1403.     move.b d6,(a0)+
  1404. dfprx5BMON:    rts
  1405. dfpstatBMON:sf d0
  1406.     moveq #8-1,d2
  1407. dfprx1BMON:    tst.w d2
  1408.     bmi.b dfprx5BMON
  1409.     btst d2,d3
  1410.     bne.b dfprx2BMON
  1411.     subq.w #1,d2
  1412.     bra.b dfprx1BMON
  1413. dfprx2BMON:    tas d0
  1414.     beq.b dfprx3BMON
  1415.     move.b #"/",(a0)+
  1416. dfprx3BMON:    move.b #"f",(a0)+
  1417.     move.b #"p",(a0)+
  1418.     move.b #"7",(a0)
  1419.     sub.b d2,(a0)+
  1420.     sf d6
  1421. dfprx4BMON:    subq.w #1,d2
  1422.     bmi.b dfprx6BMON
  1423.     btst d2,d3
  1424.     beq.b dfprx6BMON
  1425.     st d6
  1426.     bra.b dfprx4BMON
  1427. dfprx6BMON:    tst.b d6
  1428.     beq.b dfprx7BMON
  1429.     move.b #"-",(a0)+
  1430.     move.b #"f",(a0)+
  1431.     move.b #"p",(a0)+
  1432.     move.b #"7"-1,(a0)
  1433.     sub.b d2,(a0)+
  1434. dfprx7BMON:    tst.w d2
  1435.     bmi.b dfprx5BMON
  1436.     subq.w #1,d2
  1437.     bra.b dfprx1BMON
  1438.  
  1439. doccBMON:    lea ccodetxtBMON(pc),a1
  1440.     and.w #%111100000000,d0
  1441.     lsr.w #7,d0
  1442.     lea (a1,d0.w),a1
  1443.     move.b (a1)+,(a0)+
  1444.     tst.b (a1)
  1445.     beq.b docc0BMON
  1446.     move.b (a1)+,(a0)+
  1447. docc0BMON:    rts
  1448. dopccBMON:    lea pccodetxtBMON(pc),a1
  1449.     and.w #%001111,d0
  1450.     add.w d0,d0
  1451.     lea (a1,d0.w),a1
  1452.     move.b (a1)+,(a0)+
  1453.     move.b (a1)+,(a0)+
  1454.     rts
  1455. dofccBMON:    lea fccodetxtBMON(pc),a1
  1456.     and.w #%011111,d0
  1457.     add.w d0,d0
  1458.     add.w d0,d0
  1459.     lea (a1,d0.w),a1
  1460.     move.b (a1)+,(a0)+    ;1..4 charsBMON
  1461.     tst.b (a1)
  1462.     beq.b dofcc0BMON
  1463.     move.b (a1)+,(a0)+
  1464.     tst.b (a1)
  1465.     beq.b dofcc0BMON
  1466.     move.b (a1)+,(a0)+
  1467.     tst.b (a1)
  1468.     beq.b dofcc0BMON
  1469.     move.b (a1)+,(a0)+
  1470. dofcc0BMON:    rts
  1471.  
  1472.  
  1473.  
  1474. dotoeaBMON:    move.w d1,d0
  1475.     and.w #%111111,d0
  1476.     cmp.w #%111001,d0    ;dest:(pc),d(pc),#xx invalid
  1477.     bls.b doto0BMON
  1478.     sf d7 
  1479.     rts
  1480. doto0BMON:    move.b #",",(a0)+
  1481.  
  1482. doeaBMON:    moveq #%111000,d0
  1483.     and.w d1,d0
  1484.     lsr.w #2,d0
  1485.     pea eatabBMON(pc)
  1486.     move.w eatabBMON(pc,d0.w),d0    ;ext.l obsolete
  1487.     add.l d0,(a7)
  1488.     rts
  1489.  
  1490. eatabBMON:    dc.w ddirectBMON-eatabBMON
  1491.     dc.w adirectBMON-eatabBMON
  1492.     dc.w aindirectBMON-eatabBMON
  1493.     dc.w aindirectpostBMON-eatabBMON
  1494.     dc.w aindirectpreBMON-eatabBMON
  1495.     dc.w aindirectdispBMON-eatabBMON
  1496.     dc.w aindirectindexBMON-eatabBMON
  1497.     dc.w mode7BMON-eatabBMON
  1498. ddirectBMON:move.b #"d",(a0)+
  1499.     moveq #%000111,d0
  1500.     and.w d1,d0
  1501.     add.b #"0",d0
  1502.     move.b d0,(a0)+
  1503.     rts
  1504. adirectBMON:move.b #"a",(a0)+
  1505.     moveq #%000111,d0
  1506.     and.w d1,d0
  1507.     add.b #"0",d0
  1508.     move.b d0,(a0)+
  1509.     rts
  1510. toaindirectBMON:
  1511.     move.b #",",(a0)+
  1512. aindirectBMON:
  1513.     move.b #"(",(a0)+
  1514.     move.b #"a",(a0)+
  1515.     moveq #%000111,d0
  1516.     and.w d1,d0
  1517.     add.b #"0",d0
  1518.     move.b d0,(a0)+
  1519.     move.b #")",(a0)+
  1520.     bsr.w setbaseBMON
  1521.     bra.w eavalBMON
  1522. toaindirectpostBMON:
  1523.     move.b #",",(a0)+
  1524. aindirectpostBMON:
  1525.     move.b #"(",(a0)+
  1526.     move.b #"a",(a0)+
  1527.     moveq #%000111,d0
  1528.     and.w d1,d0
  1529.     add.b #"0",d0
  1530.     move.b d0,(a0)+
  1531.     move.b #")",(a0)+
  1532.     move.b #"+",(a0)+
  1533.     bsr.w setbaseBMON
  1534.     bra.w eavalBMON
  1535. aindirectpreBMON:
  1536.     move.b #"-",(a0)+
  1537.     move.b #"(",(a0)+
  1538.     moveq #%000111,d0
  1539.     and.w d1,d0
  1540.     add.b #"0",d0
  1541.     move.b #"a",(a0)+
  1542.     move.b d0,(a0)+
  1543.     move.b #")",(a0)+
  1544.     bsr.w setbaseBMON
  1545.     bra.w eavalBMON
  1546. aindirectdispBMON:
  1547.     move.b #"(",(a0)+
  1548.     move.w (a5),d0
  1549.     bsr.w swordtoa_BMON
  1550.     move.b #",",(a0)+
  1551.     move.b #"a",(a0)+
  1552.     moveq #%000111,d0
  1553.     and.w d1,d0
  1554.     add.b #"0",d0
  1555.     move.b d0,(a0)+
  1556.     move.b #")",(a0)+
  1557.     bsr.w setbaseBMON
  1558.     move.w (a5)+,d0
  1559.     ext.l d0
  1560.     add.l d0,baseregBMON
  1561.     bra.w eavalBMON
  1562. aindirectindexBMON:
  1563.     btst #0,(a5)
  1564.     bne.w indfullBMON
  1565.     bsr.w setbaseBMON
  1566.     move.b #"(",(a0)+
  1567.     move.w (a5),d0
  1568.     bsr.w sbytetoa_BMON
  1569.     ext.w d0
  1570.     ext.l d0
  1571.     add.l d0,baseregBMON
  1572.     move.b #",",(a0)+
  1573.     move.b #"a",(a0)+
  1574.     moveq #%000111,d0
  1575.     and.w d1,d0
  1576.     add.b #"0",d0
  1577.     move.b d0,(a0)+
  1578.     move.b #",",(a0)+
  1579.     moveq #"d",d0
  1580.     btst #7,(a5)
  1581.     beq.b ind0BMON
  1582.     moveq #"a",d0
  1583. ind0BMON:    move.b d0,(a0)+
  1584.     moveq #%01110000,d0
  1585.     and.b (a5),d0
  1586.     lsr.b #4,d0
  1587.     add.b #"0",d0
  1588.     move.b d0,(a0)+
  1589.     movem.l d1/a1,-(a7)
  1590.     move.w #%11110000,d0
  1591.     and.b (a5),d0
  1592.     lsr.b #2,d0
  1593.     lea regsBMON,a1
  1594.     move.l (a1,d0.w),d1
  1595.     move.b #".",(a0)+
  1596.     moveq #"l",d0
  1597.     btst #3,(a5)
  1598.     bne.b ind1BMON
  1599.     moveq #"w",d0
  1600.     ext.l d1
  1601. ind1BMON:    move.b d0,(a0)+
  1602.     moveq #%00000110,d0
  1603.     and.b (a5),d0
  1604.     beq.b ind2BMON
  1605.     lsr.b #1,d0
  1606.     move.b #"*",(a0)+
  1607.     move.b scaleBMON(pc,d0.w),(a0)+
  1608. ind2BMON:    lsl.l d0,d1
  1609.     add.l d1,baseregBMON
  1610.     move.b #")",(a0)+
  1611.     movem.l (a7)+,d1/a1
  1612.     addq.w #2,a5
  1613.     bra.w eavalBMON
  1614. scaleBMON:    dc.l "1248"
  1615. pcindfullBMON:
  1616. indfullBMON:moveq #%00001000,d0
  1617.     and.w (a5),d0
  1618.     bne.w reservedBMON        ;failBMON
  1619.     moveq #%01000111,d0
  1620.     and.w (a5),d0
  1621.     cmp.b #%01000100,d0
  1622.     bcc.w reservedBMON
  1623.     cmp.b #%00000100,d0
  1624.     beq.w reservedBMON
  1625.     moveq #%00110000,d0
  1626.     and.w (a5),d0
  1627.     beq.w reservedBMON
  1628.  
  1629.     move.w d2,-(a7)
  1630.     move.w (a5)+,d2        ;full format extension
  1631.     move.b #"(",(a0)+
  1632.     moveq #%00000111,d0
  1633.     and.w d2,d0
  1634.     beq.b nomemindBMON
  1635.     move.b #"[",(a0)+
  1636. nomemindBMON:        
  1637.  
  1638.     moveq #%111111,d0
  1639.     and.w d1,d0
  1640.     cmp.w #%111011,d0    ;pc indirect?
  1641.     bne.b nopcindBMON
  1642.  
  1643.     moveq #%00110000,d0
  1644.     and.w d2,d0
  1645.     lsr.w #4,d0
  1646.     btst #7,d2
  1647.     beq.b nozpcBMON
  1648.     bsr.w displaceBMON
  1649.     cmp.b #"[",-1(a0)
  1650.     beq.b noidispBMON
  1651.     move.b #",",(a0)+
  1652. noidispBMON:move.b #"z",(a0)+
  1653.     bra.b dozpcBMON
  1654. nozpcBMON:    subq.b #1,d0
  1655.     beq.b dozpcBMON
  1656.     subq.b #1,d0
  1657.     beq.b nozpc1BMON
  1658.     move.l a5,d0
  1659.     add.l (a5)+,d0
  1660.     subq.l #2,d0
  1661.     bsr.w hextoa_BMON
  1662. ;    move.b #".",(a0)+
  1663. ;    move.b #"l",(a0)+
  1664.     bra.b nozpc0BMON
  1665. nozpc1BMON:    move.w (a5)+,d0
  1666.     ext.l d0
  1667.     add.l a5,d0
  1668.     subq.l #4,d0
  1669.     bsr.w hextoa_BMON
  1670.     move.b #".",(a0)+
  1671.     move.b #"w",(a0)+
  1672. nozpc0BMON:    move.b #",",(a0)+
  1673. dozpcBMON:    move.b #"p",(a0)+
  1674.     move.b #"c",(a0)+
  1675.     bra.b baseokBMON
  1676. nopcindBMON:moveq #%00110000,d0    ;baseBMON displacement
  1677.     and.w d2,d0
  1678.     lsr.w #4,d0
  1679.     bsr.w displaceBMON
  1680.     moveq #%000111,d0
  1681.     and.w d1,d0
  1682.     btst #7,d2        ;bsBMON
  1683.     bne.b basesuprBMON
  1684.     cmp.b #"[",-1(a0)
  1685.     beq.b noidis2BMON
  1686.     cmp.b #"(",-1(a0)
  1687.     beq.b noidis2BMON
  1688.     move.b #",",(a0)+
  1689. noidis2BMON:move.b #"a",(a0)+
  1690.     add.b #"0",d0
  1691.     move.b d0,(a0)+
  1692.     bra.b baseokBMON    
  1693. basesuprBMON:
  1694.     tst.b d0
  1695.     bne.w basfailBMON
  1696. baseokBMON:    
  1697.     btst #2,d2        ;postindex?
  1698.     beq.b nopostBMON
  1699.     move.b #"]",(a0)+
  1700. nopostBMON:    btst #6,d2
  1701.     bne.b indsuprBMON
  1702.     cmp.b #"[",-1(a0)
  1703.     beq.b indpreBMON
  1704.     cmp.b #"(",-1(a0)
  1705.     beq.b indpreBMON
  1706.     move.b #",",(a0)+
  1707. indpreBMON:    moveq #"d",d0
  1708.     tst.w d2
  1709.     bpl.b dindxBMON
  1710.     moveq #"a",d0
  1711. dindxBMON:    move.b d0,(a0)+
  1712.     move.w #%0111000000000000,d0
  1713.     and.w d2,d0
  1714.     rol.w #4,d0
  1715.     add.b #"0",d0
  1716.     move.b d0,(a0)+
  1717.     move.b #".",(a0)+
  1718.     moveq #"l",d0
  1719.     btst #11,d2
  1720.     bne.b dind1BMON
  1721.     moveq #"w",d0
  1722. dind1BMON:    move.b d0,(a0)+
  1723.     move.w #%0000011000000000,d0
  1724.     and.w d2,d0
  1725.     beq.b dind2BMON
  1726.     rol.w #7,d0
  1727.     move.b #"*",(a0)+
  1728.     move.b scale3BMON(pc,d0.w),(a0)+
  1729. dind2BMON:    bra.b indokBMON
  1730. scale3BMON:    dc.l "1248"
  1731. indsuprBMON:move.w #%1111111000000000,d0
  1732.     and.w d2,d0
  1733.     bne.b indfailBMON
  1734. indokBMON:    moveq #%00000111,d0
  1735.     and.w d2,d0
  1736.     beq.b nopreBMON
  1737.     btst #2,d2
  1738.     bne.b nopreBMON 
  1739.     move.b #"]",(a0)+
  1740. nopreBMON:
  1741.     moveq #%00000011,d0    ;outer displacement
  1742.     and.w d2,d0
  1743.     beq.b nomemind2BMON
  1744.     cmp.b #1,d0
  1745.     beq.b nokomaBMON
  1746.     move.b #",",(a0)+
  1747. nokomaBMON:    bsr.b displaceBMON
  1748. nomemind2BMON:    
  1749.     move.b #")",(a0)+
  1750. indquitBMON:move.w (a7)+,d2
  1751.     rts
  1752. indfailBMON:
  1753. basfailBMON:sf d7
  1754.     bra.b indquitBMON
  1755.  
  1756. displaceBMON:
  1757.     subq.b #1,d0
  1758.     beq.b nullouterBMON
  1759.     subq.b #1,d0
  1760.     beq.b wordouterBMON
  1761.     move.l (a5)+,d0
  1762.     bsr.w hextoa_BMON
  1763. ;    move.b #".",(a0)+
  1764. ;    move.b #"l",(a0)+
  1765.     rts
  1766. wordouterBMON:
  1767.     move.w (a5)+,d0        ;upper word=0
  1768.     bsr.w hextoa_BMON
  1769.     move.b #".",(a0)+
  1770.     move.b #"w",(a0)+
  1771. nullouterBMON:
  1772.     rts
  1773.  
  1774. mode7BMON:    moveq #%000111,d0
  1775.     and.w d1,d0
  1776.     add.w d0,d0
  1777.     pea mod7tabBMON(pc)
  1778.     move.w mod7tabBMON(pc,d0.w),d0
  1779.     add.l d0,(a7)
  1780.     rts
  1781. mod7tabBMON:dc.w absshortBMON-mod7tabBMON
  1782.     dc.w abslongBMON-mod7tabBMON
  1783.     dc.w pcindirectBMON-mod7tabBMON
  1784.     dc.w pcindexBMON-mod7tabBMON
  1785.     dc.w immediateBMON-mod7tabBMON
  1786.     dc.w reservedBMON-mod7tabBMON
  1787.     dc.w reservedBMON-mod7tabBMON
  1788.     dc.w reservedBMON-mod7tabBMON
  1789.  
  1790. absshortBMON:
  1791.     move.b #"(",(a0)+
  1792.     moveq #0,d0
  1793.     move.w (a5)+,d0
  1794.     bsr.w hextoa_BMON
  1795.     move.b #")",(a0)+
  1796.     move.b #".",(a0)+
  1797.     move.b #"w",(a0)+
  1798.     rts
  1799. abslongBMON:move.b #"(",(a0)+
  1800.     move.l (a5)+,d0
  1801.     bsr.w hextoa_BMON
  1802.     move.b #")",(a0)+
  1803.     rts
  1804. pcindirectBMON:
  1805.     move.b #"(",(a0)+
  1806.     moveq #-2,d0
  1807.     add.w (a5)+,d0
  1808.     ext.l d0
  1809.     add.l a5,d0
  1810.     bsr.w hextoa_BMON
  1811.     move.b #",",(a0)+
  1812.     move.b #"p",(a0)+
  1813.     move.b #"c",(a0)+
  1814.     move.b #")",(a0)+
  1815.     rts
  1816. pcindexBMON:btst #0,(a5)
  1817.     bne.w pcindfullBMON
  1818.     move.b #"(",(a0)+
  1819.     move.w (a5),d0
  1820.     ext.w d0
  1821.     ext.l d0
  1822.     add.l a5,d0
  1823.     move.l d0,baseregBMON
  1824.     bsr.w hextoa_BMON
  1825.     move.b #",",(a0)+
  1826.     move.b #"p",(a0)+
  1827.     move.b #"c",(a0)+
  1828.     move.b #",",(a0)+
  1829.     moveq #"d",d0
  1830.     btst #7,(a5)
  1831.     beq.b pcind0BMON
  1832.     moveq #"a",d0
  1833. pcind0BMON:    move.b d0,(a0)+
  1834.     moveq #%01110000,d0
  1835.     and.b (a5),d0
  1836.     lsr.b #4,d0
  1837.     add.b #"0",d0
  1838.     move.b d0,(a0)+
  1839.     movem.l d1/a1,-(a7)
  1840.     move.w #%11110000,d0
  1841.     and.b (a5),d0
  1842.     lsr.b #2,d0
  1843.     lea regsBMON,a1
  1844.     move.l (a1,d0.w),d1
  1845.     move.b #".",(a0)+
  1846.     moveq #"l",d0
  1847.     btst #3,(a5)
  1848.     bne.b pcind1BMON
  1849.     moveq #"w",d0
  1850.     ext.l d1
  1851. pcind1BMON:    move.b d0,(a0)+
  1852.     moveq #%00000110,d0
  1853.     and.b (a5),d0
  1854.     beq.b pcind2BMON
  1855.     lsr.b #1,d0
  1856.     move.b #"*",(a0)+
  1857.     move.b scale2BMON(pc,d0.w),(a0)+
  1858. pcind2BMON:    lsl.l d0,d1
  1859.     add.l d1,baseregBMON
  1860.     move.b #")",(a0)+
  1861.     movem.l (a7)+,d1/a1
  1862.     addq.w #2,a5
  1863.     bra.w eavalBMON
  1864. scale2BMON:    dc.l "1248"
  1865.  
  1866. immediateBMON:
  1867.     move.b #"#",(a0)+
  1868.     moveq #0,d0
  1869.     move.w (a5)+,d0
  1870.     tst.b imsizeBMON
  1871.     bne.b imwordBMON
  1872.     cmp.w #$ff,d0
  1873.     bhi.b reservedBMON        ;failBMON
  1874.     bra.w hextoa_BMON
  1875. imwordBMON:    cmp.b #%001,imsizeBMON
  1876.     bne.b imlongBMON
  1877.     bra.w hextoa_BMON
  1878. imlongBMON:    cmp.b #%010,imsizeBMON
  1879.     bne.b fpu4wrdBMON
  1880.     swap d0
  1881.     move.w (a5)+,d0
  1882.     bra.w hextoa_BMON
  1883. imresvdBMON:cmp.b #%011,imsizeBMON
  1884.     beq.b reservedBMON
  1885. fpu4wrdBMON:cmp.b #%100,imsizeBMON    ;%1xx fpu imsizeBMON
  1886.     bne.b fpu5wrdBMON
  1887. fpu4w0BMON:    swap d0
  1888.     move.w (a5)+,d0
  1889.     bsr.w longtoa_BMON
  1890. fpu2w0BMON:    move.l (a5)+,d0
  1891.     bra.w longtoaBMON
  1892. fpu5wrdBMON:cmp.b #%101,imsizeBMON
  1893.     beq.b reservedBMON
  1894. fpu6wrdBMON:cmp.b #%110,imsizeBMON
  1895.     bne.b reservedBMON
  1896.     bsr.b fpu4w0BMON
  1897.     bra.b fpu2w0BMON
  1898.  
  1899. reservedBMON:
  1900.     sf d7
  1901.     rts
  1902.  
  1903. setbaseBMON:move.l a1,-(a7)
  1904.     lea regsBMON,a1
  1905.     moveq #%000111,d0
  1906.     and.w d1,d0
  1907.     lsl.w #2,d0
  1908.     move.l 8*4(a1,d0.w),baseregBMON    ;contentsBMON An
  1909.     move.l (a7)+,a1
  1910.     rts
  1911.  
  1912. eavalBMON:
  1913.     btst    #2,modeBMON
  1914.     beq.b    eaval1BMON
  1915.     btst #2,dissignBMON
  1916.     beq.b eaval1BMON
  1917.     move.l a0,-(a7)
  1918.     move.l baseregBMON,d0
  1919.     move.l    linebufBMON,a0
  1920.     lea.l    54(a0),a0                ;longest movem.l .... !
  1921.     move.b #";",(a0)+
  1922.     tst.b ea2ndBMON
  1923.     beq.b eaval0BMON
  1924.     lea 10(a0),a0
  1925. eaval0BMON:    bsr.w longtoa_BMON
  1926.     st ea2ndBMON
  1927.     move.l (a7)+,a0
  1928. eaval1BMON:    rts
  1929.  
  1930. sbytetoa_BMON:move.l d0,-(a7)
  1931.     btst #0,dissignBMON
  1932.     beq.b sby0BMON
  1933.     tst.b d0
  1934.     bpl.b sby0BMON
  1935.     neg.b d0    
  1936.     move.b #"-",(a0)+
  1937. sby0BMON:    and.l #$ff,d0
  1938.     btst #1,dissignBMON
  1939.     beq.b sby1BMON
  1940.     bsr.w hextodBMON
  1941.     bra.b sby2BMON
  1942. sby1BMON:    bsr.w hextoa_BMON            ;bsr.w bytetoa_BMON
  1943. sby2BMON:    move.l (a7)+,d0
  1944.     rts
  1945.  
  1946. swordtoa_BMON:move.l d0,-(a7)
  1947.     btst #0,dissignBMON
  1948.     beq.b swo0BMON
  1949.     tst.w d0
  1950.     bpl.b swo0BMON
  1951.     neg.w d0
  1952.     move.b #"-",(a0)+    
  1953. swo0BMON:    and.l #$ffff,d0
  1954.     btst #1,dissignBMON
  1955.     beq.b swo1BMON
  1956.     bsr.w hextodBMON
  1957.     bra.b swo2BMON
  1958. swo1BMON:    bsr.w hextoa_BMON            ;bsr.w wordtoa_BMON
  1959. swo2BMON:    move.l (a7)+,d0
  1960.     rts
  1961.  
  1962. ;----------------------------------------------------------
  1963.  
  1964. xopfailBMON=0            ;dummy
  1965. xnoopsBMON=1
  1966. xdcwopBMON=2
  1967. xeatoccrBMON=3
  1968. xeatosrBMON=4
  1969. xsrtoeaBMON=5
  1970. xwordbxxBMON=6
  1971. xwordccBMON=7
  1972. xshortbxxBMON=8
  1973. xshortccBMON=9
  1974. xeatoaxBMON=10
  1975. xeatodxBMON=11
  1976. xdxtoeaBMON=12
  1977. xiwordtoccrBMON=13
  1978. xiwordtosrBMON=14
  1979. xiwordBMON=15
  1980. xccodewordrelBMON=16
  1981. xinibtoeaBMON=17
  1982. xccodeeaBMON=18
  1983. xsrceaBMON=19
  1984. xsize67eatodxBMON=20
  1985. xsize8eatoax9bBMON=21
  1986. xsize67adsbxBMON=22
  1987. xsize67ixtoeaBMON=23
  1988. xsize67i9btoeaBMON=24
  1989. xsize67x9btodx02BMON=25
  1990. xitrapBMON=26
  1991. xsrcdx02BMON=27
  1992. ximuspBMON=28
  1993. ximoveBMON=29
  1994. ximoveqBMON=30
  1995. xicmpmBMON=31
  1996. xxbcdBMON=32
  1997. xsize6movepBMON=33
  1998. ximovemBMON=34
  1999. xdx9btodx02BMON=35
  2000. xax9btoax02BMON=36
  2001. xdx9btoax02BMON=37
  2002. xiunlkBMON=38
  2003. xilinkBMON=39
  2004. ximovecBMON=40
  2005. xccrtoeaBMON=41
  2006. xmovesBMON=42
  2007. xbfieldBMON=43
  2008. xbfieldtodxBMON=44
  2009. xdxtobfieldBMON=45
  2010. xbkptBMON=46
  2011. xlongbxxBMON=47
  2012. xlongccBMON=48
  2013. xcallmBMON=49
  2014. xcasBMON=50
  2015. xcas2BMON=51
  2016. xchk2BMON=52
  2017. xcmp2BMON=53
  2018. xrx03BMON=54
  2019. xccodeBMON=55
  2020. xccodesizeBMON=56
  2021. xilinklgBMON=57
  2022. xmululBMON=58
  2023. xmulslBMON=59
  2024. xdivullBMON=60
  2025. xdivsllBMON=61
  2026. xpackBMON=62
  2027. xea2todxBMON=63    ;chk.l
  2028. xfccodeBMON=64
  2029. xfccodesizeBMON=65
  2030. xfccodewordrelBMON=66
  2031. xfccodeeaBMON=67
  2032. xfnopBMON=68
  2033. xfmovecrBMON=69
  2034. xpmoveBMON=70
  2035. xpmovefdBMON=71
  2036. xpflushaBMON=72
  2037. xpflushBMON=73
  2038. xploadBMON=74
  2039. xptestBMON=75
  2040. xidbcacBMON=76
  2041. xidbindBMON=77
  2042. xmov16BMON=78
  2043. xpccodeeaBMON=79
  2044. xpccodewordrelBMON=80
  2045. xpccodeBMON=81
  2046. xpccodesizeBMON=82
  2047. xbrapccBMON=83
  2048. xbrafccBMON=84
  2049. xpflushsBMON=85
  2050. xpflushrBMON=86
  2051. xpvalidBMON=87
  2052. xpflush40BMON=88
  2053. xmov162BMON=89
  2054. xlpstopBMON=90
  2055. xtblBMON=91
  2056. xfpuBMON=92
  2057. xfmovelBMON=93
  2058. xfmovemlBMON=94
  2059. xfmovemxBMON=95
  2060.  
  2061.     even
  2062. disoffsBMON:dc.w opfailBMON,noopsBMON,dcwopBMON,eatoccrBMON,eatosrBMON,srtoeaBMON,wordbxxBMON,wordccBMON
  2063.     dc.w shortbxxBMON,shortccBMON,eatoaxBMON,eatodxBMON,dxtoeaBMON,iwordtoccrBMON
  2064.     dc.w iwordtosrBMON,iwordBMON,ccodewordrelBMON,inibtoeaBMON,ccodeeaBMON,srceaBMON
  2065.     dc.w size67eatodxBMON,size8eatoax9bBMON,size67adsbxBMON,size67ixtoeaBMON
  2066.     dc.w size67i9btoeaBMON,size67x9btodx02BMON,itrapBMON,srcdx02BMON,imuspBMON
  2067.     dc.w imoveBMON,imoveqBMON,icmpmBMON,xbcdBMON,size6movepBMON
  2068.     dc.w imovemBMON,dx9btodx02BMON,ax9btoax02BMON,dx9btoax02BMON
  2069.     dc.w iunlkBMON,ilinkBMON,imovecBMON,ccrtoeaBMON,imovesBMON,dbfieldBMON,dbfieldtodxBMON
  2070.     dc.w ddxtobfieldBMON,dbkptBMON,longbxxBMON,longccBMON,icallmBMON,dcasBMON,dcas2BMON
  2071.     dc.w dchk2BMON,dcmp2BMON,drtmBMON,dtpccBMON,dtpccsizeBMON,dlinklgBMON,dmululBMON,dmulslBMON
  2072.     dc.w ddivullBMON,ddivsllBMON,dpackBMON,ea2todxBMON,dtpfccBMON,dtpfccsizeBMON
  2073.     dc.w dfccodewordrelBMON,fccodeeaBMON,dfnopBMON,dfmovecrBMON,dpmoveBMON,dpmovefdBMON
  2074.     dc.w dpflushaBMON,dpflushBMON,dploadBMON,dptestBMON,didbcacBMON,didbindBMON,dmov16BMON
  2075.     dc.w dpccodeeaBMON,dpccodewordrelBMON,dtppccBMON,dtppccsizeBMON,dbrapccBMON,dbrafccBMON
  2076.     dc.w dpflushsBMON,dpflushrBMON,dpvalidBMON,dpflush40BMON,dmov162BMON,dlpstopBMON
  2077.     dc.w dtblBMON,dfpuBMON,dfmovelBMON,dfmovemlBMON,dfmovemxBMON
  2078.  
  2079.  
  2080. ;----------------------------------------------------------
  2081.  
  2082. instrBMON:    dc.w $ffff,$4afc,snopBMON!xnoopsBMON
  2083.     dc.b "illega","l"+128,0
  2084.     dc.w $ffff,$4e70,snopBMON!xnoopsBMON
  2085.     dc.b "rese","t"+128,0,0,0
  2086.     dc.w $ffff,$4e71,snopBMON!xnoopsBMON
  2087.     dc.b "no","p"+128,0,0,0,0,0
  2088.     dc.w $ffff,$4e73,snopBMON!xnoopsBMON
  2089.     dc.b "rt","e"+128,0,0,0,0,0
  2090.     dc.w $ffff,$4e75,snopBMON!xnoopsBMON
  2091.     dc.b "rt","s"+128,0,0,0,0,0
  2092.     dc.w $ffff,$4e77,snopBMON!xnoopsBMON
  2093.     dc.b "rt","r"+128,0,0,0,0,0
  2094.     dc.w $ffff,$4afa,snopBMON!xnoopsBMON        ;cpu32 only
  2095.     dc.b "bgn","d"+128,0,0,0,0
  2096.  
  2097.     dc.w $ffc0,$f200,snopBMON!xfpuBMON        ;68881
  2098.     dc.b "f"+128,0,0,0,0,0,0,0
  2099.     dc.w $ffc0,$f200,stabBMON!xfmovelBMON        ;68881
  2100.     dc.b "fmove.","l"+128,0
  2101.     dc.w $ffc0,$f200,stabBMON!xfmovemlBMON        ;68881
  2102.     dc.b "fmovem.","l"+128
  2103.     dc.w $ffc0,$f200,stabBMON!xfmovemxBMON        ;68881
  2104.     dc.b "fmovem.","x"+128
  2105.     dc.w $ffff,$f200,stabBMON!xfmovecrBMON        ;68881
  2106.     dc.b "fmovec","r"+128,0
  2107.     dc.w $ffff,$f280,snopBMON!xfnopBMON        ;68881
  2108.     dc.b "fno","p"+128,0,0,0,0
  2109.     dc.w $ffff,$f510,snopBMON!xnoopsBMON        ;68040 only!
  2110.     dc.b "pflusha","n"+128
  2111.     dc.w $ffff,$f518,snopBMON!xnoopsBMON        ;68040 only!
  2112.     dc.b "pflusha","!"+128
  2113.     dc.w $ffff,$f000,snopBMON!xpflushaBMON        ;68020 order!
  2114.     dc.b "pflush","a"+128,0
  2115.     dc.w $ffff,$f000,stabBMON!xpflushsBMON        ;68851 only order!
  2116.     dc.b "pflush","s"+128,0
  2117.     dc.w $ffc0,$f000,stabBMON!xpflushrBMON        ;68851 only order!
  2118.     dc.b "pflush","r"+128,0
  2119.     dc.w $fff8,$f500,stabBMON!xpflush40BMON        ;68040 only!
  2120.     dc.b "pflush","n"+128,0
  2121.     dc.w $fff8,$f508,stabBMON!xpflush40BMON        ;68040 only!
  2122.     dc.b "pflus","h"+128,0,0
  2123.     dc.w $fff8,$f548,stabBMON!xpflush40BMON        ;68040 only!
  2124.     dc.b "ptest","w"+128,0,0
  2125.     dc.w $fff8,$f568,stabBMON!xpflush40BMON        ;68040 only!
  2126.     dc.b "ptest","r"+128,0,0
  2127.  
  2128.     dc.w $ffff,$f000,stabBMON!xpflushBMON        ;68020 order!
  2129.     dc.b "pflus","h"+128,0,0
  2130.     dc.w $ffc0,$f000,stabBMON!xpvalidBMON        ;68851 only
  2131.     dc.b "pvali","d"+128,0,0
  2132.         
  2133.     dc.w $ffff,$003c,stabBMON!xiwordtoccrBMON
  2134.     dc.b "or","i"+128,0,0,0,0,0
  2135.     dc.w $ffff,$023c,stabBMON!xiwordtoccrBMON
  2136.     dc.b "and","i"+128,0,0,0,0
  2137.     dc.w $ffff,$0a3c,stabBMON!xiwordtoccrBMON
  2138.     dc.b "eor","i"+128,0,0,0,0
  2139.  
  2140.     dc.w $ffff,$007c,stabBMON!xiwordtosrBMON
  2141.     dc.b "or","i"+128,0,0,0,0,0
  2142.     dc.w $ffff,$027c,stabBMON!xiwordtosrBMON
  2143.     dc.b "and","i"+128,0,0,0,0
  2144.     dc.w $ffff,$0a7c,stabBMON!xiwordtosrBMON
  2145.     dc.b "eor","i"+128,0,0,0,0
  2146.  
  2147.     dc.w $f1f8,$c140,stabBMON!xdx9btodx02BMON
  2148.     dc.b "ex","g"+128,0,0,0,0,0
  2149.     dc.w $f1f8,$c148,stabBMON!xax9btoax02BMON
  2150.     dc.b "ex","g"+128,0,0,0,0,0
  2151.     dc.w $f1f8,$c188,stabBMON!xdx9btoax02BMON
  2152.     dc.b "ex","g"+128,0,0,0,0,0
  2153.  
  2154.     dc.w $fff8,$4e58,stabBMON!xiunlkBMON
  2155.     dc.b "unl","k"+128,0,0,0,0
  2156.     dc.w $fff8,$4808,stabBMON!xilinklgBMON        ;68020
  2157.     dc.b "link.","l"+128,0,0
  2158.     dc.w $fff8,$4e50,stabBMON!xilinkBMON
  2159.     dc.b "lin","k"+128,0,0,0,0
  2160.  
  2161.     dc.w $fff8,$4848,stabBMON!xbkptBMON        ;68020
  2162.     dc.b "bkp","t"+128,0,0,0,0
  2163.  
  2164.     dc.w $f1f0,$8140,stabBMON!xpackBMON        ;68020
  2165.     dc.b "pac","k"+128,0,0,0,0
  2166.     dc.w $f1f0,$8180,stabBMON!xpackBMON        ;68020
  2167.     dc.b "unp","k"+128,0,0,0,0
  2168.  
  2169.     dc.w $fff0,$4e40,stabBMON!xitrapBMON
  2170.     dc.b "tra","p"+128,0,0,0,0
  2171.  
  2172.     dc.w $f100,$7000,stabBMON!ximoveqBMON
  2173.     dc.b "move","q"+128,0,0,0
  2174.  
  2175.     dc.w $ffff,$f800,stabBMON!xlpstopBMON        ;cpu32 only
  2176.     dc.b "lpsto","p"+128,0,0    
  2177.     dc.w $ffff,$4e72,stabBMON!xiwordBMON
  2178.     dc.b "sto","p"+128,0,0,0,0
  2179.     dc.w $ffff,$4e74,stabBMON!xiwordBMON        ;68010
  2180.     dc.b "rt","d"+128,0,0,0,0,0
  2181.  
  2182.     dc.w $fdff,$0cfc,snopBMON!xcas2BMON        ;68020
  2183.     dc.b "cas2","."+128,0,0,0
  2184.  
  2185.     dc.w $fff8,$4840,stabBMON!xsrcdx02BMON
  2186.     dc.b "swa","p"+128,0,0,0,0
  2187.     dc.w $fff8,$49c0,stabBMON!xsrcdx02BMON        ;68020
  2188.     dc.b "ext","b"+128,0,0,0,0
  2189.     dc.w $ffb8,$4880,s6BMON!xsrcdx02BMON
  2190.     dc.b "ex","t"+128,0,0,0,0,0
  2191.  
  2192.     dc.w $fff0,$06c0,stabBMON!xrx03BMON        ;68020
  2193.     dc.b "rt","m"+128,0,0,0,0,0
  2194. ;????
  2195.     dc.w $fffe,$f07a,snopBMON!xpccodesizeBMON    ;68851 only order!
  2196.     dc.b "ptra","p"+128,0,0,0
  2197.     dc.w $ffff,$f07c,snopBMON!xpccodeBMON        ;68851 only order!
  2198.     dc.b "ptra","p"+128,0,0,0
  2199.     dc.w $fffe,$f27a,snopBMON!xfccodesizeBMON    ;68881 order!
  2200.     dc.b "ftra","p"+128,0,0,0
  2201.     dc.w $ffff,$f27c,snopBMON!xfccodeBMON        ;68881 order!
  2202.     dc.b "ftra","p"+128,0,0,0
  2203.     dc.w $f0fe,$50fa,snopBMON!xccodesizeBMON    ;68020 order!
  2204.     dc.b "tra","p"+128,0,0,0,0
  2205.     dc.w $f0ff,$50fc,snopBMON!xccodeBMON        ;68020 order!
  2206.     dc.b "tra","p"+128,0,0,0,0
  2207.     dc.w $ffff,$4e76,snopBMON!xnoopsBMON        ;order!
  2208.     dc.b "trap","v"+128,0,0,0
  2209. ;????
  2210.     dc.w $ff3f,$f418,stabBMON!xidbcacBMON        ;68040
  2211.     dc.b "cinv","a"+128,0,0,0
  2212.     dc.w $ff38,$f408,stabBMON!xidbindBMON        ;68040
  2213.     dc.b "cinv","l"+128,0,0,0
  2214.     dc.w $ff38,$f410,stabBMON!xidbindBMON        ;68040
  2215.     dc.b "cinv","p"+128,0,0,0
  2216.     dc.w $ff3f,$f438,stabBMON!xidbcacBMON        ;68040
  2217.     dc.b "cpush","a"+128,0,0
  2218.     dc.w $ff38,$f428,stabBMON!xidbindBMON        ;68040
  2219.     dc.b "cpush","l"+128,0,0
  2220.     dc.w $ff38,$f430,stabBMON!xidbindBMON        ;68040
  2221.     dc.b "cpush","p"+128,0,0
  2222.     dc.w $fff8,$f620,stabBMON!xmov16BMON        ;68040 order!
  2223.     dc.b "move1","6"+128,0,0
  2224.     dc.w $ffe0,$f600,stabBMON!xmov162BMON        ;68040
  2225.     dc.b "move1","6"+128,0,0
  2226.  
  2227.     dc.w $f138,$b108,s67BMON!xicmpmBMON
  2228.     dc.b "cmp","m"+128,0,0,0,0
  2229.  
  2230.     dc.w $f1f0,$c100,stabBMON!xxbcdBMON
  2231.     dc.b "abc","d"+128,0,0,0,0
  2232.     dc.w $f1f0,$8100,stabBMON!xxbcdBMON
  2233.     dc.b "sbc","d"+128,0,0,0,0
  2234.  
  2235.     dc.w $f130,$d100,s67BMON!xsize67adsbxBMON
  2236.     dc.b "add","x"+128,0,0,0,0
  2237.     dc.w $f130,$9100,s67BMON!xsize67adsbxBMON
  2238.     dc.b "sub","x"+128,0,0,0,0
  2239.  
  2240.     dc.w $ffc0,$f000,stabBMON!xpmovefdBMON        ;68030 only
  2241.     dc.b "pmovef","d"+128,0
  2242.     dc.w $ffc0,$f000,stabBMON!xpmoveBMON        ;68020
  2243.     dc.b "pmov","e"+128,0,0,0
  2244.     dc.w $ffc0,$f000,snopBMON!xploadBMON        ;68020
  2245.     dc.b "ploa","d"+128,0,0,0
  2246.     dc.w $ffc0,$f000,snopBMON!xptestBMON        ;68020
  2247.     dc.b "ptes","t"+128,0,0,0
  2248.  
  2249.     dc.w $ffc0,$e8c0,stabBMON!xbfieldBMON        ;68020
  2250.     dc.b "bfts","t"+128,0,0,0
  2251.     dc.w $ffc0,$eac0,stabBMON!xbfieldBMON        ;68020
  2252.     dc.b "bfch","g"+128,0,0,0
  2253.     dc.w $ffc0,$ecc0,stabBMON!xbfieldBMON        ;68020
  2254.     dc.b "bfcl","r"+128,0,0,0
  2255.     dc.w $ffc0,$eec0,stabBMON!xbfieldBMON        ;68020
  2256.     dc.b "bfse","t"+128,0,0,0
  2257.     dc.w $ffc0,$e9c0,stabBMON!xbfieldtodxBMON    ;68020
  2258.     dc.b "bfext","u"+128,0,0
  2259.     dc.w $ffc0,$ebc0,stabBMON!xbfieldtodxBMON    ;68020
  2260.     dc.b "bfext","s"+128,0,0
  2261.     dc.w $ffc0,$edc0,stabBMON!xbfieldtodxBMON    ;68020
  2262.     dc.b "bfff","o"+128,0,0,0
  2263.     dc.w $ffc0,$efc0,stabBMON!xdxtobfieldBMON    ;68020
  2264.     dc.b "bfin","s"+128,0,0,0
  2265.  
  2266.     dc.w $ffc0,$06c0,stabBMON!xcallmBMON        ;68020
  2267.     dc.b "call","m"+128,0,0,0
  2268.     
  2269.     dc.w $ffc0,$40c0,stabBMON!xsrtoeaBMON
  2270.     dc.b "mov","e"+128,0,0,0,0
  2271.     dc.w $ffc0,$42c0,stabBMON!xccrtoeaBMON        ;68010
  2272.     dc.b "mov","e"+128,0,0,0,0
  2273.     dc.w $ffc0,$44c0,stabBMON!xeatoccrBMON
  2274.     dc.b "mov","e"+128,0,0,0,0
  2275.     dc.w $ffc0,$46c0,stabBMON!xeatosrBMON
  2276.     dc.b "mov","e"+128,0,0,0,0
  2277.  
  2278.     dc.w $fff0,$4e60,stabBMON!ximuspBMON
  2279.     dc.b "mov","e"+128,0,0,0,0
  2280.  
  2281.     dc.w $fffe,$4e7a,stabBMON!ximovecBMON        ;68010
  2282.     dc.b "move","c"+128,0,0,0
  2283.  
  2284.     dc.w $fb80,$4880,s6BMON!ximovemBMON
  2285.     dc.b "move","m"+128,0,0,0
  2286.  
  2287.     dc.w $f138,$0108,s6BMON!xsize6movepBMON
  2288.     dc.b "move","p"+128,0,0,0
  2289.  
  2290.     dc.w $ffc0,$f800,snopBMON!xtblBMON        ;cpu32 only
  2291.     dc.b "tb","l"+128,0,0,0,0,0
  2292.  
  2293.     dc.w $f1c0,$41c0,stabBMON!xeatoaxBMON
  2294.     dc.b "le","a"+128,0,0,0,0,0
  2295.  
  2296.     dc.w $ffff,$60ff,stabBMON!xlongbxxBMON        ;68020
  2297.     dc.b "bra.","l"+128,0,0,0
  2298.     dc.w $ffff,$61ff,stabBMON!xlongbxxBMON        ;68020
  2299.     dc.b "bsr.","l"+128,0,0,0
  2300.     dc.w $ffff,$6000,stabBMON!xwordbxxBMON
  2301.     dc.b "bra.","w"+128,0,0,0
  2302.     dc.w $ffff,$6100,stabBMON!xwordbxxBMON
  2303.     dc.b "bsr.","w"+128,0,0,0
  2304.     dc.w $ff00,$6000,stabBMON!xshortbxxBMON        ;order !
  2305.     dc.b "bra.","b"+128,0,0,0
  2306.     dc.w $ff00,$6000,stabBMON!xshortbxxBMON        ;order !
  2307.     dc.b "bra.","s"+128,0,0,0                ;clone
  2308.     dc.w $ff00,$6100,stabBMON!xshortbxxBMON
  2309.     dc.b "bsr.","b"+128,0,0,0
  2310.     dc.w $ff00,$6100,stabBMON!xshortbxxBMON
  2311.     dc.b "bsr.","s"+128,0,0,0                ;clone
  2312.     dc.w $ffb0,$f080,snopBMON!xbrapccBMON        ;68851 only
  2313.     dc.b "p","b"+128,0,0,0,0,0,0
  2314.     dc.w $ffa0,$f280,snopBMON!xbrafccBMON        ;68881
  2315.     dc.b "f","b"+128,0,0,0,0,0,0
  2316.     dc.w $f0ff,$60ff,snopBMON!xlongccBMON        ;68020
  2317.     dc.b "b"+128,0,0,0,0,0,0,0
  2318.     dc.w $f0ff,$6000,snopBMON!xwordccBMON
  2319.     dc.b "b"+128,0,0,0,0,0,0,0
  2320.     dc.w $f000,$6000,snopBMON!xshortccBMON
  2321.     dc.b "b"+128,0,0,0,0,0,0,0
  2322.  
  2323.     dc.w $fff8,$f048,snopBMON!xpccodewordrelBMON    ;68851 only
  2324.     dc.b "pd","b"+128,0,0,0,0,0
  2325.     dc.w $ffc0,$f040,snopBMON!xpccodeeaBMON        ;68851 only
  2326.     dc.b "p","s"+128,0,0,0,0,0,0
  2327.     dc.w $fff8,$f248,snopBMON!xfccodewordrelBMON    ;68881
  2328.     dc.b "fd","b"+128,0,0,0,0,0
  2329.     dc.w $ffc0,$f240,snopBMON!xfccodeeaBMON        ;68881
  2330.     dc.b "f","s"+128,0,0,0,0,0,0
  2331.  
  2332.     dc.w $f0f8,$50c8,snopBMON!xccodewordrelBMON    ;order !
  2333.     dc.b "d","b"+128,0,0,0,0,0,0
  2334.     dc.w $f0c0,$50c0,snopBMON!xccodeeaBMON
  2335.     dc.b "s"+128,0,0,0,0,0,0,0
  2336.  
  2337.     dc.w $ffc0,$4800,stabBMON!xsrceaBMON
  2338.     dc.b "nbc","d"+128,0,0,0,0
  2339.     dc.w $ffc0,$4840,stabBMON!xsrceaBMON
  2340.     dc.b "pe","a"+128,0,0,0,0,0
  2341.     dc.w $ffc0,$4ac0,stabBMON!xsrceaBMON
  2342.     dc.b "ta","s"+128,0,0,0,0,0
  2343.     dc.w $ffc0,$4e80,stabBMON!xsrceaBMON
  2344.     dc.b "js","r"+128,0,0,0,0,0
  2345.     dc.w $ffc0,$4ec0,stabBMON!xsrceaBMON
  2346.     dc.b "jm","p"+128,0,0,0,0,0
  2347.     dc.w $ffc0,$e0c0,stabBMON!xsrceaBMON
  2348.     dc.b "as","r"+128,0,0,0,0,0
  2349.     dc.w $ffc0,$e1c0,stabBMON!xsrceaBMON
  2350.     dc.b "as","l"+128,0,0,0,0,0
  2351.     dc.w $ffc0,$e2c0,stabBMON!xsrceaBMON
  2352.     dc.b "ls","r"+128,0,0,0,0,0
  2353.     dc.w $ffc0,$e3c0,stabBMON!xsrceaBMON
  2354.     dc.b "ls","l"+128,0,0,0,0,0
  2355.     dc.w $ffc0,$e4c0,stabBMON!xsrceaBMON
  2356.     dc.b "rox","r"+128,0,0,0,0
  2357.     dc.w $ffc0,$e5c0,stabBMON!xsrceaBMON
  2358.     dc.b "rox","l"+128,0,0,0,0
  2359.     dc.w $ffc0,$e6c0,stabBMON!xsrceaBMON
  2360.     dc.b "ro","r"+128,0,0,0,0,0
  2361.     dc.w $ffc0,$e7c0,stabBMON!xsrceaBMON
  2362.     dc.b "ro","l"+128,0,0,0,0,0
  2363.     dc.w $ffc0,$f100,stabBMON!xsrceaBMON        ;68851 only
  2364.     dc.b "psav","e"+128,0,0,0
  2365.     dc.w $ffc0,$f140,stabBMON!xsrceaBMON        ;68851 only
  2366.     dc.b "prestor","e"+128
  2367.     dc.w $ffc0,$f300,stabBMON!xsrceaBMON        ;68881
  2368.     dc.b "fsav","e"+128,0,0,0
  2369.     dc.w $ffc0,$f340,stabBMON!xsrceaBMON        ;68881
  2370.     dc.b "frestor","e"+128
  2371.  
  2372.     dc.w $ffc0,$4c40,stabBMON!xdivullBMON        ;68020
  2373.     dc.b "divul.","l"+128,0
  2374.     dc.w $ffc0,$4c40,stabBMON!xdivsllBMON        ;68020
  2375.     dc.b "divsl.","l"+128,0
  2376.     dc.w $ffc0,$4c40,stabBMON!xmululBMON        ;68020
  2377.     dc.b "divu.","l"+128,0,0
  2378.     dc.w $ffc0,$4c40,stabBMON!xmulslBMON        ;68020
  2379.     dc.b "divs.","l"+128,0,0
  2380.     dc.w $ffc0,$4c00,stabBMON!xmululBMON        ;68020
  2381.     dc.b "mulu.","l"+128,0,0
  2382.     dc.w $ffc0,$4c00,stabBMON!xmulslBMON        ;68020
  2383.     dc.b "muls.","l"+128,0,0
  2384.  
  2385.     dc.w $f1c0,$80c0,stabBMON!xeatodxBMON
  2386.     dc.b "div","u"+128,0,0,0,0
  2387.     dc.w $f1c0,$81c0,stabBMON!xeatodxBMON
  2388.     dc.b "div","s"+128,0,0,0,0
  2389.     dc.w $f1c0,$c0c0,stabBMON!xeatodxBMON
  2390.     dc.b "mul","u"+128,0,0,0,0
  2391.     dc.w $f1c0,$c1c0,stabBMON!xeatodxBMON
  2392.     dc.b "mul","s"+128,0,0,0,0
  2393.     dc.w $f1c0,$4180,stabBMON!xeatodxBMON
  2394.     dc.b "chk.","w"+128,0,0,0
  2395.     dc.w $f1c0,$4100,stabBMON!xea2todxBMON        ;68020
  2396.     dc.b "chk.","l"+128,0,0,0
  2397.  
  2398.     dc.w $f0c0,$90c0,s8BMON!xsize8eatoax9bBMON
  2399.     dc.b "sub","a"+128,0,0,0,0
  2400.     dc.w $f0c0,$b0c0,s8BMON!xsize8eatoax9bBMON
  2401.     dc.b "cmp","a"+128,0,0,0,0
  2402.     dc.w $f0c0,$d0c0,s8BMON!xsize8eatoax9bBMON
  2403.     dc.b "add","a"+128,0,0,0,0
  2404.  
  2405.     dc.w $f100,$8000,s67BMON!xsize67eatodxBMON
  2406.     dc.b "o","r"+128,0,0,0,0,0,0
  2407.     dc.w $f100,$9000,s67BMON!xsize67eatodxBMON
  2408.     dc.b "su","b"+128,0,0,0,0,0
  2409.     dc.w $f100,$b000,s67BMON!xsize67eatodxBMON
  2410.     dc.b "cm","p"+128,0,0,0,0,0
  2411.     dc.w $f100,$c000,s67BMON!xsize67eatodxBMON
  2412.     dc.b "an","d"+128,0,0,0,0,0
  2413.     dc.w $f100,$d000,s67BMON!xsize67eatodxBMON
  2414.     dc.b "ad","d"+128,0,0,0,0,0
  2415.  
  2416.     dc.w $f100,$8100,s67BMON!xdxtoeaBMON
  2417.     dc.b "o","r"+128,0,0,0,0,0,0
  2418.     dc.w $f100,$9100,s67BMON!xdxtoeaBMON
  2419.     dc.b "su","b"+128,0,0,0,0,0
  2420.     dc.w $f100,$b100,s67BMON!xdxtoeaBMON
  2421.     dc.b "eo","r"+128,0,0,0,0,0
  2422.     dc.w $f100,$c100,s67BMON!xdxtoeaBMON
  2423.     dc.b "an","d"+128,0,0,0,0,0
  2424.     dc.w $f100,$d100,s67BMON!xdxtoeaBMON
  2425.     dc.b "ad","d"+128,0,0,0,0,0
  2426.  
  2427.     dc.w $ffc0,$0800,stabBMON!xinibtoeaBMON
  2428.     dc.b "bts","t"+128,0,0,0,0
  2429.     dc.w $ffc0,$0840,stabBMON!xinibtoeaBMON
  2430.     dc.b "bch","g"+128,0,0,0,0
  2431.     dc.w $ffc0,$0880,stabBMON!xinibtoeaBMON
  2432.     dc.b "bcl","r"+128,0,0,0,0
  2433.     dc.w $ffc0,$08c0,stabBMON!xinibtoeaBMON
  2434.     dc.b "bse","t"+128,0,0,0,0
  2435.  
  2436.     dc.w $f9c0,$08c0,s9a_BMON!xcasBMON        ;68020
  2437.     dc.b "ca","s"+128,0,0,0,0,0
  2438.     dc.w $f9c0,$00c0,s9aBMON!xchk2BMON        ;68020
  2439.     dc.b "chk","2"+128,0,0,0,0
  2440.     dc.w $f9c0,$00c0,s9aBMON!xcmp2BMON        ;68020
  2441.     dc.b "cmp","2"+128,0,0,0,0
  2442.  
  2443.     dc.w $f100,$5000,s67BMON!xsize67i9btoeaBMON
  2444.     dc.b "add","q"+128,0,0,0,0
  2445.     dc.w $f100,$5100,s67BMON!xsize67i9btoeaBMON
  2446.     dc.b "sub","q"+128,0,0,0,0
  2447.  
  2448.     dc.w $f118,$e000,s67BMON!xsize67x9btodx02BMON
  2449.     dc.b "as","r"+128,0,0,0,0,0
  2450.     dc.w $f118,$e008,s67BMON!xsize67x9btodx02BMON
  2451.     dc.b "ls","r"+128,0,0,0,0,0
  2452.     dc.w $f118,$e010,s67BMON!xsize67x9btodx02BMON
  2453.     dc.b "rox","r"+128,0,0,0,0
  2454.     dc.w $f118,$e018,s67BMON!xsize67x9btodx02BMON
  2455.     dc.b "ro","r"+128,0,0,0,0,0
  2456.     dc.w $f118,$e100,s67BMON!xsize67x9btodx02BMON
  2457.     dc.b "as","l"+128,0,0,0,0,0
  2458.     dc.w $f118,$e108,s67BMON!xsize67x9btodx02BMON
  2459.     dc.b "ls","l"+128,0,0,0,0,0
  2460.     dc.w $f118,$e110,s67BMON!xsize67x9btodx02BMON
  2461.     dc.b "rox","l"+128,0,0,0,0
  2462.     dc.w $f118,$e118,s67BMON!xsize67x9btodx02BMON
  2463.     dc.b "ro","l"+128,0,0,0,0,0
  2464.  
  2465.     dc.w $ff00,$0000,s67BMON!xsize67ixtoeaBMON
  2466.     dc.b "or","i"+128,0,0,0,0,0
  2467.     dc.w $ff00,$0200,s67BMON!xsize67ixtoeaBMON
  2468.     dc.b "and","i"+128,0,0,0,0
  2469.     dc.w $ff00,$0400,s67BMON!xsize67ixtoeaBMON
  2470.     dc.b "sub","i"+128,0,0,0,0
  2471.     dc.w $ff00,$0600,s67BMON!xsize67ixtoeaBMON
  2472.     dc.b "add","i"+128,0,0,0,0
  2473.     dc.w $ff00,$0a00,s67BMON!xsize67ixtoeaBMON
  2474.     dc.b "eor","i"+128,0,0,0,0
  2475.     dc.w $ff00,$0c00,s67BMON!xsize67ixtoeaBMON
  2476.     dc.b "cmp","i"+128,0,0,0,0
  2477.  
  2478.     dc.w $f1c0,$0100,stabBMON!xdxtoeaBMON
  2479.     dc.b "bts","t"+128,0,0,0,0
  2480.     dc.w $f1c0,$0140,stabBMON!xdxtoeaBMON
  2481.     dc.b "bch","g"+128,0,0,0,0
  2482.     dc.w $f1c0,$0180,stabBMON!xdxtoeaBMON
  2483.     dc.b "bcl","r"+128,0,0,0,0
  2484.     dc.w $f1c0,$01c0,stabBMON!xdxtoeaBMON
  2485.     dc.b "bse","t"+128,0,0,0,0
  2486.  
  2487.     dc.w $ff00,$0e00,s67BMON!xmovesBMON        ;68010
  2488.     dc.b "move","s"+128,0,0,0
  2489.  
  2490.     dc.w $ff00,$4000,s67BMON!xsrceaBMON
  2491.     dc.b "neg","x"+128,0,0,0,0
  2492.     dc.w $ff00,$4200,s67BMON!xsrceaBMON
  2493.     dc.b "cl","r"+128,0,0,0,0,0
  2494.     dc.w $ff00,$4400,s67BMON!xsrceaBMON
  2495.     dc.b "ne","g"+128,0,0,0,0,0
  2496.     dc.w $ff00,$4600,s67BMON!xsrceaBMON
  2497.     dc.b "no","t"+128,0,0,0,0,0
  2498.     dc.w $ff00,$4a00,s67BMON!xsrceaBMON
  2499.     dc.b "ts","t"+128,0,0,0,0,0
  2500.  
  2501.     dc.w $c000,$0000,snopBMON!ximoveBMON
  2502.     dc.b "move","."+128,0,0,0
  2503.  
  2504.     dc.w $f000,$a000,stabBMON!xdcwopBMON
  2505.     dc.b "line-","a"+128,0,0
  2506.     dc.w $f000,$f000,stabBMON!xdcwopBMON
  2507.     dc.b "line-","f"+128,0,0
  2508.     dc.w $0000,$0000,stabBMON!xdcwopBMON
  2509.     dc.b "dc.","w"+128,0,0,0,0
  2510.  
  2511.  
  2512. s67BMON =$0000
  2513. s6BMON  =$0100
  2514. s8BMON  =$0200
  2515. stabBMON=$0300
  2516. snopBMON=$0400
  2517. s9a_BMON=$0500    ;68020 casBMON
  2518. s9aBMON =$0600    ;68020 chk2,cmp2
  2519.  
  2520. ;----------------------------------------------------------
  2521.  
  2522. twolong_BMON:
  2523.     bsr.b longtoa_BMON
  2524.     move.b #"-",(a0)+
  2525.     move.l d1,d0
  2526.     bra.b longtoa_BMON
  2527. twoadr_BMON:bsr.b adrtoa_BMON
  2528.     move.b #"-",(a0)+
  2529.     move.l d1,d0
  2530.     bra.b adrtoa_BMON
  2531. nibtoa_BMON:move.b #"$",(a0)+
  2532. nibtoaBMON:    movem.l d0-d2,-(a7)
  2533.     moveq #1-1,d2
  2534.     ror.l #4,d0
  2535.     bra.b lta0BMON
  2536. bytetoa_BMON:move.b #"$",(a0)+
  2537. bytetoaBMON:movem.l d0-d2,-(a7)
  2538.     moveq #2-1,d2
  2539.     ror.l #8,d0
  2540.     bra.b lta0BMON
  2541. wordtoa_BMON:move.b #"$",(a0)+
  2542. wordtoaBMON:movem.l d0-d2,-(a7)
  2543.     moveq #4-1,d2
  2544.     swap d0
  2545.     bra.b lta0BMON
  2546. adrtoa_BMON:move.b #"$",(a0)+
  2547. adrtoaBMON:    movem.l d0-d2,-(a7)
  2548.     moveq #6-1,d2
  2549.     lsl.l #8,d0
  2550.     bra.b lta0BMON
  2551. longtoa_BMON:move.b #"$",(a0)+
  2552.  
  2553. longtoaBMON:movem.l d0-d2,-(a7)
  2554.     moveq #8-1,d2
  2555. lta0BMON:    rol.l #4,d0
  2556.     moveq #$0f,d1
  2557.     and.w d0,d1
  2558.     move.b l2asciiBMON(pc,d1.w),(a0)+
  2559.     dbf d2,lta0BMON
  2560.     movem.l (a7)+,d0-d2
  2561.     rts
  2562. l2asciiBMON:dc.b "0123456789abcdef"
  2563. hextoa_BMON:movem.l d0-d3,-(a7)
  2564.     moveq #9,d2
  2565.     cmp.l d2,d0
  2566.     bls.b hta3BMON
  2567.     move.b #"$",(a0)+
  2568. hta3BMON:    sf d3
  2569.     moveq #8-1,d2
  2570. hta0BMON:    rol.l #4,d0
  2571.     moveq #$0f,d1
  2572.     and.w d0,d1
  2573.     bne.b hta1BMON
  2574.     tst.w d2
  2575.     beq.b hta1BMON
  2576.     tst.b d3
  2577.     beq.b hta2BMON
  2578. hta1BMON:    st d3
  2579.     move.b l2asciiBMON(pc,d1.w),(a0)+
  2580. hta2BMON:    dbf d2,hta0BMON            
  2581.     movem.l (a7)+,d0-d3
  2582.     rts
  2583. wordtodBMON:move.l d0,-(a7)
  2584.     ext.l d0
  2585.     divu #1000,d0
  2586.     add.b #"0",d0
  2587.     move.b d0,(a0)+
  2588.     clr.w d0
  2589.     swap d0
  2590.     divu #100,d0
  2591.     add.b #"0",d0
  2592.     move.b d0,(a0)+
  2593.     swap d0
  2594.     bra.b btd0BMON
  2595. bytetodBMON:move.l d0,-(a7)
  2596. btd0BMON:    cmp.b #99,d0
  2597.     bls.b btd1BMON
  2598.     moveq #99,d0    
  2599. btd1BMON:    ext.w d0
  2600.     ext.l d0
  2601.     divu #10,d0
  2602.     bra.b ntd1BMON
  2603. nibtodBMON:    move.l d0,-(a7)
  2604.     moveq #%1111,d0
  2605.     and.l (a7),d0
  2606.     divu #10,d0
  2607.     beq.b ntd0BMON
  2608. ntd1BMON:    add.b #"0",d0
  2609.     move.b d0,(a0)+
  2610. ntd0BMON:    swap d0
  2611.     add.b #"0",d0
  2612.     move.b d0,(a0)+
  2613.     move.l (a7)+,d0
  2614.     rts
  2615. hextodBMON:    movem.l d0-d4/a1,-(a7)
  2616.     lea divtabBMON(pc),a1
  2617.     moveq #10-1,d1
  2618.     sf d4
  2619. hd0BMON:    moveq #"0",d2
  2620.     move.l (a1)+,d3
  2621. hd1BMON:    cmp.l d3,d0
  2622.     bcs.b hd2BMON
  2623.     st d4
  2624.     sub.l d3,d0
  2625.     addq.b #1,d2
  2626.     bra.b hd1BMON
  2627. hd2BMON:    tst.w d1
  2628.     beq.b hd4BMON
  2629.     tst.b d4
  2630.     beq.b hd3BMON
  2631. hd4BMON:    move.b d2,(a0)+
  2632. hd3BMON:    dbf d1,hd0BMON
  2633.     movem.l (a7)+,d0-d4/a1
  2634.     rts
  2635. divtabBMON:    dc.l 1000000000,100000000,10000000,1000000
  2636.     dc.l 100000,10000,1000,100,10,1
  2637.  
  2638. hextobBMON:    movem.l d0-d4,-(a7)
  2639.     sf d4
  2640.     bsr.b hb3BMON    
  2641.     bsr.b hb3BMON    
  2642.     bsr.b hb3BMON    
  2643.     st d4
  2644.     bsr.b hb3BMON    
  2645.     movem.l (a7)+,d0-d4
  2646.     rts
  2647. hb3BMON:    rol.l #8,d0
  2648.     move.b d0,d3
  2649.     bne.b hb2BMON
  2650.     tst.b d4
  2651.     beq.b hb4BMON
  2652. hb2BMON:    st d4
  2653. bytetobBMON:moveq #8-1,d2
  2654. hb0BMON:    moveq #"0",d1
  2655.     add.b d3,d3
  2656.     bcc.b hb1BMON
  2657.     moveq #"1",d1
  2658. hb1BMON:    move.b d1,(a0)+
  2659.     dbf d2,hb0BMON
  2660.     move.b #" ",(a0)+
  2661. hb4BMON:    rts
  2662.  
  2663.     ifne HRTeval
  2664.  
  2665. atolong_BMON
  2666. atolongBMON
  2667. atoword_BMON
  2668. atowordBMON
  2669. atobyte_BMON
  2670. atobyteBMON
  2671. atodnibBMON
  2672. atodlongBMON
  2673.         movem.l    d1-d7/a0-a2/a4-a6,-(a7)
  2674.         move.l    a3,a0
  2675.         bsr    evaluate
  2676.         move.l    a0,a3
  2677.         movem.l    (a7)+,d1-d7/a0-a2/a4-a6
  2678.         tst.l    d0
  2679.         rts
  2680.  
  2681.     else
  2682.  
  2683. atolong_BMON:cmp.b #"$",(a3)
  2684.     bne.b atolongBMON
  2685.     addq.w #1,a3
  2686. atolongBMON:moveq #8-1,d2
  2687.     bra.b atob2BMON
  2688. atoword_BMON:cmp.b #"$",(a3)
  2689.     bne.b atowordBMON
  2690.     addq.w #1,a3
  2691. atowordBMON:moveq #4-1,d2
  2692.     bra.b atob2BMON
  2693. atobyte_BMON:cmp.b #"$",(a3)
  2694.     bne.b atobyteBMON
  2695.     addq.w #1,a3
  2696. atobyteBMON:moveq #2-1,d2
  2697. atob2BMON:    moveq #0,d0
  2698. atob1BMON:    move.b (a3),d1
  2699.     cmp.b #"f",d1
  2700.     bhi.b atob3BMON
  2701.     sub.b #"0",d1
  2702.     bcs.b atob3BMON
  2703.     cmp.b #9,d1
  2704.     bls.b atob0BMON
  2705.     cmp.b #"a"-"0",d1
  2706.     bcs.b atob3BMON
  2707.     sub.b #"a"-"0"-10,d1
  2708. atob0BMON:    lsl.l #4,d0
  2709.     or.b d1,d0
  2710.     addq.w #1,a3
  2711.     dbf d2,atob1BMON
  2712. atob3BMON:    tst.l d0
  2713.     rts
  2714. atodnibBMON:moveq #0,d0        ;0-99
  2715.     move.b (a3),d1
  2716.     sub.b #"0",d1
  2717.     bcs.b atdnb0BMON
  2718.     cmp.b #9,d1
  2719.     bhi.b atdnb0BMON
  2720.     addq.w #1,a3
  2721.     move.b d1,d0
  2722.     move.b (a3),d1
  2723.     sub.b #"0",d1
  2724.     bcs.b atdnb0BMON
  2725.     cmp.b #9,d1
  2726.     bhi.b atdnb0BMON
  2727.     addq.w #1,a3
  2728.     mulu #10,d0
  2729.     add.b d1,d0
  2730. atdnb0BMON:    tst.b d0
  2731.     rts
  2732. atodlongBMON:
  2733.     moveq #0,d0
  2734.     moveq #0,d1
  2735.     moveq #10-1,d2
  2736. atol1BMON:    move.b (a3),d1
  2737.     sub.b #"0",d1
  2738.     bcs.b atodl0BMON
  2739.     cmp.b #9,d1
  2740.     bhi.b atodl0BMON
  2741.     addq.w #1,a3
  2742.     add.l d0,d0        ;*2
  2743.     move.l d0,-(a7)
  2744.     lsl.l #2,d0        ;*2*4
  2745.     add.l (a7)+,d0
  2746.     add.l d1,d0
  2747.     dbf d2,atol1BMON
  2748. atodl0BMON:    rts
  2749.  
  2750.     endc
  2751.  
  2752. ;----------------------------------------------------------
  2753. fpuinstBMON:dc.b %10110000,"sinco","s"+128    ;order!
  2754.     dc.b %00011000,"ab","s"+128,0,0,0
  2755.     dc.b %01011000,"sab","s"+128,0,0
  2756.     dc.b %01011100,"dab","s"+128,0,0
  2757.     dc.b %00011100,"aco","s"+128,0,0
  2758.     dc.b %10100010,"ad","d"+128,0,0,0
  2759.     dc.b %11100010,"sad","d"+128,0,0
  2760.     dc.b %11100110,"dad","d"+128,0,0
  2761.     dc.b %00001100,"asi","n"+128,0,0
  2762.     dc.b %00001010,"ata","n"+128,0,0
  2763.     dc.b %00001101,"atan","h"+128,0
  2764.     dc.b %10111000,"cm","p"+128,0,0,0
  2765.     dc.b %00011101,"co","s"+128,0,0,0
  2766.     dc.b %00011001,"cos","h"+128,0,0
  2767.     dc.b %10100000,"di","v"+128,0,0,0
  2768.     dc.b %11100000,"sdi","v"+128,0,0
  2769.     dc.b %11100100,"ddi","v"+128,0,0
  2770.     dc.b %00010000,"eto","x"+128,0,0
  2771.     dc.b %00011110,"getex","p"+128
  2772.     dc.b %00011111,"getma","n"+128
  2773.     dc.b %00000001,"in","t"+128,0,0,0
  2774.     dc.b %00000011,"intr","z"+128,0
  2775.     dc.b %00010101,"log1","0"+128,0
  2776.     dc.b %00010110,"log","2"+128,0,0
  2777.     dc.b %00010100,"log","n"+128,0,0
  2778.     dc.b %00000110,"lognp","1"+128    
  2779.     dc.b %10100001,"mo","d"+128,0,0,0
  2780. movetxtBMON:dc.b %10000000,"mov","e"+128,0,0
  2781.     dc.b %11000000,"smov","e"+128,0
  2782.     dc.b %11000100,"dmov","e"+128,0
  2783.     dc.b %10100011,"mu","l"+128,0,0,0
  2784.     dc.b %11100011,"smu","l"+128,0,0
  2785.     dc.b %11100111,"dmu","l"+128,0,0
  2786.     dc.b %00011010,"ne","g"+128,0,0,0
  2787.     dc.b %01011010,"sne","g"+128,0,0
  2788.     dc.b %01011110,"dne","g"+128,0,0
  2789.     dc.b %10100101,"re","m"+128,0,0,0
  2790.     dc.b %10100110,"scal","e"+128,0
  2791.     dc.b %10100100,"sgldi","v"+128
  2792.     dc.b %10100111,"sglmu","l"+128
  2793.     dc.b %00001110,"si","n"+128,0,0,0
  2794.     dc.b %00000010,"sin","h"+128,0,0
  2795.     dc.b %00000100,"sqr","t"+128,0,0
  2796.     dc.b %01000001,"ssqr","t"+128,0
  2797.     dc.b %01000101,"dsqr","t"+128,0
  2798.     dc.b %10101000,"su","b"+128,0,0,0
  2799.     dc.b %11101000,"ssu","b"+128,0,0
  2800.     dc.b %11101100,"dsu","b"+128,0,0
  2801.     dc.b %00001111,"ta","n"+128,0,0,0
  2802.     dc.b %00001001,"tan","h"+128,0,0
  2803.     dc.b %00010010,"tento","x"+128
  2804.     dc.b %00111010,"ts","t"+128,0,0,0
  2805.     dc.b %00010001,"twoto","x"+128
  2806.     dc.b 0    
  2807.     even    
  2808. ;----------------------------------------------------------
  2809. ccodetxtBMON:    dc.b "t",0,"f",0,"hilscccsneeqvcvsplmigeltgtle"    ;even!
  2810. pccodetxtBMON:    dc.b "bsbclslcssscasacwswcisicgsgccscc"    ;even!
  2811. fccodetxtBMON:    dc.l "f"<<24    ;fpu condition codesBMON
  2812.         dc.l "eq"<<16
  2813.         dc.l "ogt"<<8
  2814.         dc.l "oge"<<8
  2815.         dc.l "olt"<<8
  2816.         dc.l "ole"<<8
  2817.         dc.l "ogl"<<8
  2818.         dc.l "or"<<16
  2819.         dc.l "un"<<16
  2820.         dc.l "ueq"<<8
  2821.         dc.l "ugt"<<8
  2822.         dc.l "uge"<<8
  2823.         dc.l "ult"<<8
  2824.         dc.l "ule"<<8
  2825.         dc.l "ne"<<16
  2826.         dc.l "t"<<24
  2827.         dc.l "sf"<<16
  2828.         dc.l "seq"<<8
  2829.         dc.l "gt"<<16
  2830.         dc.l "ge"<<16
  2831.         dc.l "lt"<<16
  2832.         dc.l "le"<<16
  2833.         dc.l "gl"<<16
  2834.         dc.l "gle"<<8
  2835.         dc.l "ngle"
  2836.         dc.l "ngl"<<8
  2837.         dc.l "nle"<<8
  2838.         dc.l "nlt"<<8
  2839.         dc.l "nge"<<8
  2840.         dc.l "ngt"<<8
  2841.         dc.l "sne"<<8
  2842.         dc.l "st"<<16
  2843.  
  2844. fmconstBMON:dc.b "1","E"+$80,"P","i"+$80,"Log10(2",")"+$80,"e"+$80,"Log2(e",")"+$80
  2845.     dc.b "Log10(e",")"+$80,"0.","0"+$80,"ln(2",")"+$80,"ln(10",")"+$80
  2846.     dc.b "1"+$80,"1","0"+$80,"10","0"+$80
  2847.  
  2848. usptxtBMON:        dc.b "us","p"+$80
  2849. toccrtxtBMON:    dc.b ","
  2850. ccrtxtBMON:        dc.b "cc","r"+$80
  2851. tosrtxtBMON:    dc.b ","
  2852. srtxtBMON:        dc.b "s","r"+$80
  2853. xbcdtxtBMON:    dc.b "),-","("+$80
  2854. cmpmtxtBMON:    dc.b ")+,","("+$80
  2855.         even
  2856. cregsBMON:    dc.b $08,$08,"pcr",0    ;68060
  2857.         dc.b $08,$07,"srp",0    ;68040
  2858.         dc.b $08,$06,"urp",0    ;68040
  2859.         dc.b $08,$05,"mmur"    ;68040
  2860.         dc.b $08,$04,"isp",0
  2861.         dc.b $08,$03,"msp",0
  2862.         dc.b $08,$02,"caar"    ;68020/30 only
  2863.         dc.b $08,$01,"vbr",0
  2864.         dc.b $08,$00,"usp",0
  2865.         dc.b $00,$08,"busr"    ;68060
  2866.         dc.b $00,$07,"dtt1"    ;68040
  2867.         dc.b $00,$06,"dtt0"    ;68040
  2868.         dc.b $00,$05,"itt1"    ;68040
  2869.         dc.b $00,$04,"itt0"    ;68040
  2870.         dc.b $00,$03,"tc",0,0    ;68040
  2871.         dc.b $00,$02,"cacr"
  2872.         dc.b $00,$01,"dfc",0
  2873.         dc.b $00,$00,"sfc",0
  2874.         dc.b $80
  2875. pregsBMON:    dc.b $08,"tt","0"+$80
  2876.         dc.b $0c,"tt","1"+$80
  2877.         dc.b $40,"t","c"+$80
  2878.         dc.b $44,"dr","p"+$80    ;68851 only
  2879.         dc.b $48,"sr","p"+$80
  2880.         dc.b $4c,"cr","p"+$80
  2881.         dc.b $50,"ca","l"+$80    ;68851 only
  2882.         dc.b $58,"sc","c"+$80    ;68851 only
  2883.         dc.b $5c,"a","c"+$80    ;68851 only
  2884.         dc.b $60,"mmus","r"+$80    ;68030 mmusr = 68851 psr
  2885.         dc.b $60,"ps","r"+$80    ;68030 mmusr = 68851 psr
  2886.         dc.b $64,"pcs","r"+$80    ;68851 only
  2887.         dc.b $ac,"va","l"+$80,0    ;68851 only
  2888.  
  2889. sizemovBMON:    dc.b "*blw",%11,%00,%10,%01
  2890.         even
  2891.  
  2892.  
  2893. ;----------------------------------------------------------
  2894.  
  2895. linebufBMON        dc.l 0
  2896.  
  2897. modeBMON        dc.b 0
  2898.  
  2899. imsizeBMON:    dc.b 0            ;%00.b,%01.w,%10.l,%11.*,%100.x
  2900. ea2ndBMON:    dc.b 0            ;0:1st eavalue,ff:2nd eavalue
  2901. dissignBMON:dc.b %101     ;bit0:nosign/sign,bit1:hex/dez,bit2:no eavalBMON/eavalBMON
  2902.     even
  2903.  
  2904. baseregBMON        dc.l 0        ;effective addressBMON accu
  2905. disaddrBMON        dc.l 0
  2906.  
  2907. ;----------------------------------------------------------
  2908. regsBMON:    blk.l 16+6+1+1,0 ;regsBMON/usp/isp/msp/vbr/cacr/caar/pc/sr.w
  2909. vbregBMON=19*4+regsBMON
  2910. sfcdfcBMON:    dc.w 0            ;00000xxx00000yyy
  2911. fpuregsBMON:blk.l 8*12,0        ;fp0..7:80+16bit
  2912. fpcrBMON:    dc.l 0            ;\
  2913. fpsrBMON:    dc.l 0            ; )union
  2914. fpiarBMON:    dc.l 0            ;/
  2915. mmutt0BMON:    dc.l 0            ;\
  2916. mmutt1BMON:    dc.l 0            ; \
  2917. mmutcBMON:    dc.l 0            ;  )union
  2918. mmusrpBMON:    dc.l 0,0        ;  )
  2919. mmucrpBMON:    dc.l 0,0        ; /
  2920. mmusrBMON:    dc.w 0            ;/
  2921. mmudrpBMON:    dc.l 0,0        ;68851 only
  2922.  
  2923.  
  2924.  
  2925.